저는 Spring 2.5.4를 사용 중이며 Weblogic에 배포 할 Java 응용 프로그램을 작성 중입니다.어노테이션으로 지정된 bean 이름이 기존의 호환되지 않는 bean 정의와 충돌합니다.
내 코드에서 사용하려는 외부 라이브러리 (내 응용 프로그램의 결과 WAR 파일의 WEB-INF/classes 디렉토리에 포함)에 클래스가 있습니다. 내 코드에서 클래스의 객체에 대한 인스턴스 변수를 만들고 @Autowired 주석과 getter 및 setter를 추가했습니다. 내 응용 프로그램의 컨텍스트 파일에서 나는 라이브러리 클래스의 타입의 빈을 선언 한 다음 추가 : 클래스를 검색하고 주석을 처리 할 것 AutowiredAnnotationBeanPostProcessor를 등록하기 위해 ...
<context:annotation-config />
<context:component-scan base-package="com.mycompany" />
합니다. 나는 시도하고 응용 프로그램을 배포 할 때
, 나는 다음과 같은 오류 얻을 :
java.lang.IllegalStateException: Annotation-specified bean name 'myBean' for bean
class [com.mycompany.package.ClassName] conflicts with existing, non-compatible
bean definition of same name and class [com.mycompany.otherPackage.ClassName]
을 내 응용 프로그램 코드에서 하나의 같은 이름을 가진 라이브러리의 클래스 (두 클래스가 있기 때문에이 생각 '패키지 이름은 "com.mycompany"로 시작합니다). Nb. 이것은 내가 추가 한 클래스가 아니라 다른 클래스입니다. 내 응용 프로그램에서 클래스 이름을 변경하지 않고이 문제를 피할 수있는 방법이 있습니까?
어떤 도움을 주셔서 감사합니다.
getBean(). Spring은 IOC 컨테이너로 사용하기위한 것입니다. 당신이하고있는 일은 IOC가 아닙니다 ... 아주 못생긴 해결책 –