[SPRING] 프로그래밍 방식으로 Bean 검색
SPRING프로그래밍 방식으로 Bean 검색
@Configuration
public class MyConfig {
@Bean(name = "myObj")
public MyObj getMyObj() {
return new MyObj();
}
}
@Configuration Spring 주석이있는 MyConfig 객체가 있습니다. 내 질문은 프로그래밍 방식으로 (일반 클래스에서) Bean을 검색하는 방법입니다.
예를 들어 코드 스 니펫은 다음과 같습니다. 미리 감사드립니다.
public class Foo {
public Foo(){
// get MyObj bean here
}
}
public class Var {
public void varMethod(){
Foo foo = new Foo();
}
}
해결법
-
==============================
1.여기 예
여기 예
public class MyFancyBean implements ApplicationContextAware { private ApplicationContext applicationContext; void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } public void businessMethod() { //use applicationContext somehow } }
그러나 ApplicationContext에 직접 액세스 할 필요는 거의 없습니다. 일반적으로 한 번 시작하면 Bean이 자동으로 채워집니다.
여기 있습니다 :
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
applicationContext.xml에 이미 포함 된 파일은 언급 할 필요가 없습니다. 이제 이름이나 유형으로 하나의 Bean을 간단히 가져올 수 있습니다.
ctx.getBean("someName")
ContextLoaderListener, @Configuration 클래스 등을 사용하여 Spring을 시작하는 많은 방법이 있습니다.
-
==============================
2.이 시도:
이 시도:
public class Foo { public Foo(ApplicationContext context){ context.getBean("myObj") } } public class Var { @Autowired ApplicationContext context; public void varMethod(){ Foo foo = new Foo(context); } }
-
==============================
3.ApplicationContext에서 Bean을 가져와야 할 경우 가장 간단한 방법은 아니지만 가장 간단한 방법은 클래스에 ApplicationContextAware 인터페이스를 구현하고 setApplicationContext () 메소드를 제공하는 것입니다.
ApplicationContext에서 Bean을 가져와야 할 경우 가장 간단한 방법은 아니지만 가장 간단한 방법은 클래스에 ApplicationContextAware 인터페이스를 구현하고 setApplicationContext () 메소드를 제공하는 것입니다.
ApplicationContext에 대한 참조가 있으면 Bean 인스턴스를 리턴하는 많은 메소드에 액세스 할 수 있습니다.
단점은 클래스가 Spring 컨텍스트를 인식하게하여 필요하지 않은 경우 피해야한다는 것입니다.
from https://stackoverflow.com/questions/25775888/retrieve-bean-programmatically by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 경로 변수를 기반으로하는 스프링 보안 권한 (0) | 2019.08.13 |
---|---|
[SPRING] 스프링 부트는 자바 주석에서 구성 속성 / 메시지를 외부화합니다. (0) | 2019.08.13 |
[SPRING] Heroku의 Spring Boot Gradle 앱 : jarfile에 액세스 할 수 없습니다 (0) | 2019.08.13 |
[SPRING] Spring AOP : pointcut에서 최종 클래스와 열거를 피하십시오. (0) | 2019.08.13 |
[SPRING] ManyToMany 단방향 관계에 대한 Spring Data JPA 사양 (0) | 2019.08.13 |