내가 정말로 원하는 것을 설명하는 것은 어렵습니다. 클래스의 변수에 대한 모든 런타임 디버그 정보를 제공하는 메서드 getRuntimeInfo()
이있는 인터페이스가 있습니다. 이 인터페이스를 구현하는 모든 클래스 목록을보고 싶습니다. 자바와 스프링을 사용하고 있습니다. 이렇게 할 수있는 한 가지 방법은 스프링 컨텍스트에서 모든 빈을 가져와 instanceof
연산자를 사용하여 확인하는 것입니다. 그러나 명백한 성능 영향을 미치기를 원하지는 않을 것입니다. 다른 옵션이 있습니까?특정 인터페이스를 구현하는 모든 클래스를 추적합니다.
8
A
답변
13
무엇 :
@Component
public class WithAllMyInterfaceImpls {
@Autowire
List<MyInterface> allBeansThatImplementTheMyInterface;
}
리스트은() 시작에 한번 채워집니다 그래서 "정상적인"런타임 성능에 큰 영향을주지해야한다.
의견 :
당신은 당신은 봄이 IOC 컨테이너 알고 코드
설명 할 수있다. @Component
은 Spring에게이 클래스의 인스턴스를 생성해야한다고 알려줍니다 (소위 스프링 관리 Bey). IOC은 Container가 다른 인스턴스 (Spring Managed Beans)에 대한 참조를 삽입 할 책임이 있다는 것을 의미합니다. @Autowire
(물론 @Resource
과 @Inject
은 모두 동일 함)은 Spring에게이 필드가 Spring에 의해 채워 져야한다는 것을 알려주는 주석입니다. Spring 자체는 필드가 채워 져야하는 인스턴스를 파악하려고 시도합니다. Spring이 사용하는 기본 기술은 by type
입니다. 이는 Spring이 필드의 유형을 검사하고 일치하는 bean을 검색한다는 것을 의미합니다. 귀하의 경우 그것은 일반적인리스트입니다 - 이것은 약간 특별합니다. 이 경우 Spring은 필드를 목록으로 채 웁니다. 여기서 요소는 제네릭 유형과 일치하는 모든 bean입니다.
2
ApplicationContext의 getBeansOfType 메소드는 어떻습니까? 그것은 인터페이스를 구현하는 빈의 Map을 리턴한다. 이 솔루션에 대한
관련 문제
- 1. 인터페이스를 구현하는 모든 클래스를 찾으십시오.
- 2. 주어진 인터페이스를 구현하는 모든 Delphi 클래스를 열거합니까?
- 3. 지정된 인터페이스를 구현하는 모든 클래스를 얻는 방법
- 4. 주어진 인터페이스를 구현하는 모든 클래스를 찾는 방법은 무엇입니까?
- 5. Java, 특정 인터페이스를 구현하는 URLClassLoader에서 모든 클래스 가져 오기
- 6. 주어진 인터페이스를 구현하는 패키지의 모든 클래스 나열하기
- 7. 인터페이스를 구현하는 "기본"구체적인 클래스를 얻는 중
- 8. 동일한 인터페이스를 구현하는 클래스를 변환하는 빠른 방법
- 9. 구문 질문 - 인터페이스를 구현하는 추상 클래스를 확장합니다.
- 10. 사전에 특정 제네릭 인터페이스를 구현하는 모든 유형을 넣으려면 어떻게해야합니까?
- 11. 특정 COM 인터페이스를 구현하는 모든 coclass를 열거하는 방법?
- 12. Eclipse - 인터페이스를 확장하는 모든 클래스를 찾습니다.
- 13. as/flex, 특정 인터페이스를 구현하는 패키지에서 모든 클래스를 찾을 수 있습니까?
- 14. Visual Studio 2010에서 특정 인터페이스를 구현하는 모든 클래스를 찾는 방법은 무엇입니까?
- 15. 특정 인터페이스를 구현하는 ATL COM 개체 만들기
- 16. 캐스팅하지 않고 특정 인터페이스를 구현하는 유형 수집?
- 17. 인터페이스를 구현하는 객체 선언하기
- 18. 특정 인터페이스를 구현하는 클래스에만 유효한 Java Annotation?
- 19. II을 구현하는 모든 클래스를 찾아 최적화하고 특정 유형을 명시 적으로 구현하는 클래스를 찾으십시오.
- 20. 노드 인터페이스를 구현하는 모든 객체 나열
- 21. Java에서 인터페이스를 구현하는 모든 클래스 테스트
- 22. COM 개체가 구현하는 모든 인터페이스를 어떻게 검색합니까?
- 23. 인터페이스를 구현하는 모든 일반 목록 개체를 반환하십시오.
- 24. Mef는 런타임에 지정된 인터페이스를 구현하는 모든 유형을 가져옵니다.
- 25. 인터페이스를 준수하는 클래스를 동적으로로드
- 26. 인터페이스를 구현하는 ActionScript 클래스 가져 오기
- 27. 인터페이스를 구현하는 서비스에 바인딩
- 28. 인터페이스를 구현하는 일반 기본 클래스
- 29. 동적으로 인터페이스를 구현하는 클래스 만들기
- 30. 외부 라이브러리에서 인터페이스를 구현하는 EJB
정상적인 봄 autowiring 기능은 특별한 것이 없습니다. 그것은 핵심 스프링 기능입니다. – Ralph
@ user1117398 : 약간 설명하기 위해 대답을 확장했습니다. - 당신이 봄 3.0을 읽어야하는 것처럼 보입니다 !!! 또는 3.1 튜토리얼. – Ralph