[SPRING] 스프링 autowire 및 프로토 타입 범위
SPRING스프링 autowire 및 프로토 타입 범위
다음과 같은 주석을 가진 Bar라는 클래스가 있습니다. @Configurable (autowire = Autowire.BY_TYPE)
개인 회원에는 다음과 같은 주석이 있습니다.
@Autowired(required = true)
private Foo foo;
스프링 환경에서 나는 Foo 클래스의 bean을 가지고있다. bean이 scope = "prototype"으로 정의 된 경우 작동하지 않으며 다음과 같은 예외가 발생합니다.
일단 내가 주입 된 빈 범위를 "싱글 톤"으로 변경하면 잘 동작한다.
프로토 타입 범위 bean의 자동 배선이 허용되지 않습니까?
수동으로 빈을 가져 오는 것 외에 다른 해결 방법이 있습니까?
미리 감사드립니다. Avner
해결법
-
==============================
1.다음 링크는 이러한 시나리오에 대한 대체 솔루션을 제공합니다.
다음 링크는 이러한 시나리오에 대한 대체 솔루션을 제공합니다.
첫 번째 링크에서는 Food에 추가하는 방법에 대해 설명합니다.
@Component @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype") class Foo
매번 새로운 인스턴스가 생성됩니다.
-
==============================
2.그 콩에 대한 XML에서 선언 된 프로토 타입 / 싱글 톤 것은 문제라고 생각합니다.
그 콩에 대한 XML에서 선언 된 프로토 타입 / 싱글 톤 것은 문제라고 생각합니다.
나는 그것이 허용되지 않는다고 생각한다. 논리는 허용되는 경우 해당 클래스를 사용할 때마다 항상 해당 빈을 해당 필드로 다시 인스턴스화해야합니다. 특히이 bean이 필드로 autowired되는 클래스가 싱글 톤 그 자체 인 경우 특히 이상합니다.
범위 속성을 제거하려고하면 프로토 타입 속성 일 경우 검색되지 않습니다. 만약 당신이 applicationContext에서 bean (서비스와 DAO)을 선언했다면, 기본 bean은 singleton이기 때문에 autowire annotation을 singleton으로 지정하십시오.
-
==============================
3.삽입 된 bean 스코프가 'Singleton'이면, bean의 동일한 인스턴스가 자동으로 연결됩니다. 삽입 된 bean 범위가 'prototype'이면 자동 인스턴스 작성 프로세스의 일부로 새 인스턴스가 작성됩니다.
삽입 된 bean 스코프가 'Singleton'이면, bean의 동일한 인스턴스가 자동으로 연결됩니다. 삽입 된 bean 범위가 'prototype'이면 자동 인스턴스 작성 프로세스의 일부로 새 인스턴스가 작성됩니다.
어떤 버전의 스프링을 사용하고 있으며 자세한 내용은 spring-context.xml을 첨부하십시오.
from https://stackoverflow.com/questions/9819994/spring-autowire-and-prototype-scope by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 데이터 jpa utf-8 인코딩이 작동하지 않습니다. (0) | 2019.03.26 |
---|---|
[SPRING] Java Spring의 오버로드 컨트롤러 메소드 (0) | 2019.03.26 |
[SPRING] 왜 Spring은 @DependsOn 주석을 무시 했습니까? (0) | 2019.03.26 |
[SPRING] @PersistenceContext Spring 및 Java EE의 EntityManager 스레드 안전성 (0) | 2019.03.26 |
[SPRING] 스프링 데이터 JPA CRUDRepository에 캐시 기능을 추가하는 방법 (0) | 2019.03.26 |