>  기사  >  Java  >  @autowired와 @resource 주석의 차이점은 무엇입니까?

@autowired와 @resource 주석의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2020-11-09 10:35:1587427검색

차이점: 1. @Autowired 주석은 Spring에서 제공되며 byType에 따라서만 주입됩니다. @resource 주석은 J2EE에서 제공되며 기본적으로 byName에 의해 자동으로 주입됩니다. 2. @Autowired는 기본적으로 타입별로 어셈블되고, @Resource는 기본적으로 이름별로 어셈블된다.

@autowired와 @resource 주석의 차이점은 무엇입니까?

관련 권장 사항: "Java Video Tutorial"

Spring은 자체 @Autowired 주석을 지원할 뿐만 아니라 JSR-250 사양에 정의된 여러 주석도 지원합니다. 예를 들어 @Resource, @PostConstruct 및 @PreDestroy

1, @Autowired

는 Spring에서 제공되며 byType

2에 따라서만 주입되고 @Resource

은 J2EE에서 제공되며 기본적으로 byName에 의해 자동으로 주입됩니다

@ Resource에는 name과 type이라는 두 가지 중요한 속성이 있습니다.

Spring은 @Resource 주석의 name 속성을 Bean의 이름으로 구문 분석하고, type 속성은 Bean의 유형으로 구문 분석합니다. 따라서 name 속성을 사용하면 byName 자동 주입 전략이 사용되고, type 속성을 사용하면 byType 자동 주입 전략이 사용됩니다. name이나 type 속성이 모두 지정되지 않으면 byName 자동 주입 전략이 리플렉션 메커니즘을 통해 사용됩니다.

@Resource 어셈블리 순서:

(1) 이름과 유형이 동시에 지정되면 어셈블리용 Spring 컨텍스트에서 일치하는 빈만 발견됩니다. 발견되지 않으면 예외가 발생합니다.

(2 ) name이 지정되면 어셈블리용 Spring 컨텍스트에서 일치하는 이름(id)을 가진 bean을 검색합니다. 발견되지 않으면 예외가 발생합니다

(3) type이 지정되면 유일한 bean을 찾습니다. 어셈블리에 대한 Spring 컨텍스트에서 일치하는 유형이 발견되지 않으면 예외가 발생하거나 둘 이상 발견되면 예외가 발생합니다

(4) 이름이나 유형이 모두 지정되지 않으면 어셈블리 byName 메소드에서 자동으로 수행됩니다. 일치하는 항목이 없으면 일치를 위해 기본 유형으로 대체하고 일치하는 항목이 있으면 자동 연결합니다.

@Resource의 기능은 @Autowired가 byType에 따라 자동으로 주입된다는 점을 제외하면 @Autowired와 동일합니다.

3. 사용법 차이점

(1) @Autowired와 @Resource는 모두 Bean을 어셈블하는 데 사용할 수 있으며 둘 다 fields 또는 settermethods

에 작성할 수 있습니다. (2)@Autowired가 어셈블됩니다. 기본적으로 , 기본적으로 종속 개체가 있어야 합니다. null 값을 허용하려면 ​​ 해당 필수 속성 false으로 설정할 수 있습니다. 이름 조합을 사용하려면 @Qualifier 주석과 함께 사용하면 됩니다.

(3) @Resource, 는 기본적으로 이름 에 따라 조립됩니다. 이름은 name 속성 을 통해 지정할 수 있습니다. 필드에 주석을 작성할 때. , 는 기본적으로 필드 이름을 사용합니다. 이름 조회를 수행합니다. 주석이 setter 메소드에 작성되면 기본적으로 속성 이름이 어셈블리에 사용됩니다. 이름과 일치하는 빈을 찾을 수 없을 때 는 유형에 따라 조립됩니다. 다만, name 속성을 지정하면 이름에 따라서만 조합된다는 점에 유의해야 한다.

필드에 @Resource 주석을 사용하는 것이 좋습니다. 그러면 setter 메서드를 작성할 필요가 없으며 이 주석은 J2EE에 속하므로 Spring과의 결합을 줄입니다.

@autowired와 @resource 주석의 차이점은 무엇입니까?
@Resource 주석

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 교육을 방문하세요! !

위 내용은 @autowired와 @resource 주석의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.