Я хотел бы поделиться своим решением, которое следует @Configurable
подходу, как briefly
, упомянутое в @ glaz666 answer , потому что
- Ответ @skaffman - почти 10 лет, и это не значит, что он недостаточно хорош или не работает
- Ответ @ glaz666 является кратким и не помог мне решить мою проблему, но направил меня в правильном направлении
Моя настройка
- Spring Boot 2.0.3 с
Spring Neo4j & Aop starts
(что в любом случае не имеет значения)
- Создание компонента, когда
Spring Boot
готов, используя подход @Configurable
(используя ApplicationRunner
)
- Gradle & Eclipse
Steps
Мне нужно было выполнить следующие шаги, чтобы заставить его работать
-
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE, dependencyCheck = false)
, который нужно поместить поверх вашего Bean
, который должен быть создан вручную. В моем случае Bean
, который должен быть создан вручную, имеет сервисы @Autowired
, следовательно, реквизиты вышеупомянутой аннотации.
- Аннотируйте основной
XXXApplicaiton.java
Spring Boot (или файл, отмеченный @SpringBootApplication
) с помощью @EnableSpringConfigured
и @EnableLoadTimeWeaving(aspectjWeaving=AspectJWeaving.ENABLED)
- Добавьте зависимости в ваш файл сборки (т.е. build.gradle или pom.xml в зависимости от того, какой файл вы используете)
compile('org.springframework.boot:spring-boot-starter-aop')
и compile('org.springframework:spring-aspects:5.0.7.RELEASE')
- Новый + ваш
Bean
, который помечен @Configurable
где угодно, и его зависимости должны быть автоматически подключены.
* Что касается пункта 3 выше, я знаю, что org.springframework.boot:spring-boot-starter-aop
транзитивно вытягивает spring-aop
(как показано здесь mavencentral ), но в моем случае Eclipse не удалось разрешить 1059 * аннотаций, следовательно, почему я явно добавил зависимость spring-aop
в дополнение к стартеру. Если вы столкнулись с той же проблемой, просто объявите зависимость или отправляйтесь на поиски решения
- Есть ли конфликт версий
- Почему
org.springframework.context.annotation.aspect.*
недоступен
- Правильно ли настроена ваша IDE
- и т. Д.