programing

주석을 사용하여 이름별 스프링 빈 자동 배선

magicmemo 2023. 8. 9. 20:38
반응형

주석을 사용하여 이름별 스프링 빈 자동 배선

Springs 최신 버전에서는 주석을 사용하여 빈을 자동 배선할 수 있습니다.@Autowired이렇게 하면 유형(또는 생성자(적용된 경우)을 사용하여 콩을 자동으로 배선합니다.제가 사용할 수 있는 방법이 있습니까?@Autowired주석은 Spring의 XML 파일에서 주석 없이 수행하던 bean 이름을 autowire="byName"으로 기반으로 합니까?

사용할 수 있는 항목:

@Autowired
@Qualifier("beanname")

@Qualifier javadoc에 따르면

이 주석은 자동 배선 시 후보 원두의 한정자로 필드 또는 매개 변수에 사용할 수 있습니다.

JSR-250을 사용할 수 있습니다.@Resource생성자 주입 또는 다중 매개 변수 메소드 주입이 필요하지 않은 경우를 제외하고는 바이네임 빈 자동 배선에 사용됩니다.

문서에서:

주석 기반 주입을 이름으로 표현하려면 기술적으로 @Qualifier 값을 통해 빈 이름을 참조할 수 있는 경우에도 @Autowired를 주로 사용하지 마십시오.대신 JSR-250 @Resource 주석을 사용합니다. 이 주석은 고유한 이름으로 특정 대상 구성 요소를 식별하도록 의미적으로 정의되며 선언된 유형은 일치 프로세스와 관련이 없습니다.

DI 컨테이너에 등록할 빈의 이름을 정의하려면 주석 자체에 @Service("employeeManager")와 같이 이름을 전달할 수 있습니다.

그런 다음 아래 코드를 사용하여 이름별로 자동 배선을 활성화할 수 있습니다.

@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;

나는 이름으로 자동 배선을 엉망으로 만드는 빈 네임 프록시를 사용하고 있었습니다.@리소스는 종류를 신경 쓰지 않기 때문에 그런 문제가 없었습니다.그래서 이제 스프링 개발자들이 추천하는 한 가지 이유를 알게 되었습니다 :-) 그냥 참고하세요.

빈의 Java 클래스 정의에 @Component("beanname") 사용

그런 다음 자동 배선 중에 JSR 330을 사용합니다.

@Inject @Named(값="beanname")

언급URL : https://stackoverflow.com/questions/11831261/autowiring-spring-bean-by-name-using-annotation

반응형