При использовании AspectJ зачем использовать @Component вместо @Configurable.
У меня есть настройка Spring и AspectJ для поддержки @Transactional, аспектов самовызова и внедрения в сущности JPA. Это прекрасно работает.
Я использую @Component для большинства классов, которым требуется инъекция, и, таким образом, либо внедряю их в свои зависимости. Или, когда я не могу, внедряю ApplicationContext, а затем использую getBean() в качестве последнего средства. И я резервирую @Configurable только для объектов JPA (Hibernate), которым требуется инъекция. Я также начал использовать @Configurable для тестов jUnit, чтобы упростить написание тестов. Это также отлично работает.
Но мне любопытно. Если AspectJ теперь автоматически внедряет (обогащает) что-либо с помощью аннотации @Configurable, независимо от того, как она построена; getBean(), new(), @Autowired. Почему бы мне просто не переключиться на использование @Configurable для всех моих bean-компонентов? Тогда я могу полностью отказаться от контекста приложения и getBean() и просто использовать new() для любых классов, которые я не могу внедрить.
Я понимаю, что я не упомянул конфигурацию компонента XML. Я не уклоняюсь от этого, но этот проект не требует этого. Я просто конструктор или установщик ввожу зависимости при тестировании. очень просто.