이 기사의 주요 연구는 다음과 같이 봄이 시작된 후 특정 주석을 가진 모든 콩을 얻는 것입니다.
최근 프로젝트에서 비즈니스 시나리오를 만났는데, 이는 스프링 컨테이너가 시작된 후 모든 콩에 특정 인터페이스 객체를 구현하는 모든 콩을 얻는 것입니다. 내가 가장 먼저 생각한 것은 ApplicationContextAware입니다. setApplicationContext에서 CTX를 통해 모든 콩을 얻었습니다. 나중에, 나는 논리가 잘못 보인다는 것을 알았습니다. 이 방법은 모든 콩이 초기화 된 후에 구현되지 않았습니다. 나중에, 나는 청취자 등이 있는지 확인하고 ApplicationListener가 좋은 것을 발견 한 다음 Baidu는 ApplicationListener를 사용했습니다. 많은 예가 있다는 것이 밝혀 졌으므로 예제를 기록 할 것입니다.
매우 간단합니다. ApplicationListener<ContextRefreshedEvent> 인터페이스를 구현 한 다음 @Component 만 구현 클래스를 구현하십시오. 코드는 다음과 같습니다.
@component public conteTrephedListener는 ApplicationListener <contextrefreshedevent> {@override public void onapplicationEvent (contextrephedevent event) {// 루트 컨테이너가 스프링 컨테이너입니다. event.getApplicationContext (). getBeanSwitHannotation (imobile.class); for (object bean : beans.values ()) {system.err.println (bean == null? "null": bean.getClass (). getName ());} system.err.println ( "==== conteTrephedEvent ========="+events ()). 그 중에서도 특정 주석이있는 모든 Bean 컬렉션은 event.getApplicationContext().getBeansWithAnnotation 통해 얻은 다음 모든 Bean을 반복하여 비즈니스 시나리오를 구현합니다.
요약 및 생각 : 이러한 함수는 시스템 매개 변수를 초기화하고 시스템의 모든 인터페이스 서비스 목록을 얻을 수 있으며 스프링이 시작된 후 초기화 해야하는 다른 기능.
연장하자 : 시작 후 위의 이벤트 외에도 다른 세 가지 이벤트가 있습니다.
컨테이너를 닫을 때 닫히는 것이 호출되고 컨테이너가 시작되면 시작되며 컨테이너가 닫히면 중지됩니다.
나는 Tomcatserver를 시작하고 멈췄다. 왜 그런지 모르겠으므로 시간이 있으면 계속 공부할 것입니다.
위는 스프링이 시작된 후 특정 주석이있는 모든 Bean 인스턴스 코드를 얻는 것에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!