[SPRING] Spring Boot, @Configurable을 사용하여 관리되지 않는 클래스에 @Autowire로드 및 시간 짜기
SPRINGSpring Boot, @Configurable을 사용하여 관리되지 않는 클래스에 @Autowire로드 및 시간 짜기
Spring 외부에서 인스턴스화 된 관리되지 않는 클래스의 콜렉션이 있습니다. 나는로드 시간과 함께 Spring AOP를 사용하여 @ 클래스에 빈을 넣으려고 시도했지만, 지금까지 아무런 운이 없었습니다.
나는 Tomcat 8과 Spring Boot 1.2.0을 사용하여 테스트를 해왔다.
클래스를 설정하려고하는 @Configuration은 다음과 같습니다.
@Configuration
@PropertySource("classpath:application.properties")
@EnableSpringConfigured
@EnableLoadTimeWeaving
public class Config
내부 구성 @Auotwire로 묶고 싶은 bean을 관리되지 않는 클래스로 정의합니다 :
@Bean
public StateProvider stateProvider() {
//setup bean
return new DynamoStateProviderImpl( );
}
관리되지 않는 bean은 다음과 같습니다.
@Configurable(autowire = Autowire.BY_TYPE, dependencyCheck = true, preConstruction = true)
public class StateOutput implements UnifiedOutput {
@Autowired
private StateProvider stateProvider;
그리고 나는 다음과 같은 deps가 내 pom 안에있다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-agent</artifactId>
<version>2.5.6.SEC03</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
지금까지 stateProvider에 주입 된 것을 볼 수 없었거나 로그에서 정보를 가져올 수 없었습니다. 나는 또한 setter 스타일 주입을 시도했다.
@Autowired
public void setStateProvider(StateProvider stateProvider){
this.stateProvider = stateProvider;
}
감사
해결법
-
==============================
1.LTW를 측정하려면 javaagent를 사용하거나 \ lib 폴더에 spring-tomcat-weaver.jar을두고 context.xml에 TomcatInstrumentableClassLoader를 설정해야합니다.
LTW를 측정하려면 javaagent를 사용하거나 \ lib 폴더에 spring-tomcat-weaver.jar을두고 context.xml에 TomcatInstrumentableClassLoader를 설정해야합니다.
javaagent 예제 :
-javaagent:"${settings.localRepository}/org/springframework/spring-agent/2.5.6.SEC03/spring-agent-2.5.6.SEC03".jar
ClassLoader 예제 :
<Context> <Loader loaderClass="org.springframework.instrument.classl oading.tomcat.TomcatInstrumentableClassLoader" /> </Context>
from https://stackoverflow.com/questions/29167500/spring-boot-autowire-into-an-unmanaged-class-using-configurable-and-load-time by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] redis로 Spring의 캐시 추상화를 사용하여 다중 캐시 저장소를 생성 할 수 있습니까? (0) | 2019.03.30 |
---|---|
[SPRING] 초기 뷰 호출에서 Angular JS의 Spring MVC에서 데이터 가져 오기 (0) | 2019.03.30 |
[SPRING] Spring 4와 주석을 사용하여 비동기 동작을 검증하기위한 단위 테스트를 작성하려면 어떻게해야합니까? (0) | 2019.03.29 |
[SPRING] 봄 필터 예외 처리 (0) | 2019.03.29 |
[SPRING] AOP의 Advisor와 Aspect의 차이점은 무엇입니까? (0) | 2019.03.29 |