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