> 类库下载 > java类库 > 봄 주석

봄 주석

高洛峰
풀어 주다: 2016-10-17 09:19:12
원래의
1514명이 탐색했습니다.

선택권이 많으면 좋은 걸까요?

10년이 넘는 빠른 개발과 업데이트 끝에 Spring은 독특한 혁신과 더 많은 선택권을 제공하여 많은 팬을 확보했습니다! 예를 들어 스프링 빈 어셈블리(XML의 명시적 구성, Java의 명시적 구성, 암시적 빈 검색 메커니즘 및 자동 어셈블리), 주석의 다양화(기본 주석, jsr250, jsr330) 등이 있습니다!

이렇게 반복되는 선택이 많다는 게 정말 좋은 일일까요? 이는 또한 학습 및 마스터링 비용이 증가하여 마스터하기가 더 어려워진다는 것을 의미합니까?
비유를 들어보자. 봄이라는 정신병자는 의학을 공부하면 나라도 구할 수 있다고 말한다. 입대하여 나라를 다스리다(자바 표시) 구성), 포획 사격 연습에 성공하려 할 때 실제로는 더 간단하게 나라를 교육하고 구하는 방법(콩 자동 조립)이 있다고 알려준다!
초보자로서 개인적으로 서블릿을 배우는 것부터 JSP, Struts를 거쳐 지금의 Spring까지 점점 구덩이가 커지고 있다고 생각합니다!

더 이상 고민하지 않고 몇 가지 간단한 주석을 소개하겠습니다.

@Autowired 주석: 자동 조립을 실현합니다.
1. spring xml 구성 파일에 다음 두 클래스를 삽입해야 합니다.

    <beans>
        <bean id="testA" class="..../TestA" />
        <bean id="testUtil" class="..../TestUtil" />
    </beans>
로그인 후 복사
로그인 후 복사

2. testUtil 클래스에 testA 클래스를 어셈블하려면 다음을 사용하세요. testUtil 클래스 @Autowired 주석에 있습니다.
TestA를 TestUtil에 삽입하려는 경우 코드는 다음과 같습니다.

    public class TestUtil{
        @Autowired
        private Test testA;
        .......
    }
로그인 후 복사

간단히 말하면 자동 연결은 Spring이 자동으로 수행하는 방법입니다. 빈 종속성을 충족합니다. 종속성을 충족하는 과정에서 특정 빈의 요구 사항과 일치하는 다른 빈이 Spring 애플리케이션 컨텍스트에서 발견됩니다.
@Autowired 주석은 생성자뿐만 아니라 메서드 및 속성에도 사용할 수 있습니다. 일치하는 빈이 없으면 애플리케이션 컨텍스트가 생성될 때 Spring은 예외를 발생시킵니다. 예외를 방지하려면 @Autowired의 필수 속성을 false로 설정할 수 있습니다. 그러나 필수 속성을 false로 설정할 때는 주의해야 합니다. 코드에 null 검사가 없으면 이 어셈블되지 않은 속성으로 인해 NullPointerException이 발생할 수 있습니다.
@Autowired는 spring 전용 주석입니다. 자동 어셈블리 작업을 완료하기 위해 코드의 모든 곳에서 Spring 전용 주석을 사용하고 싶지 않다면 @Inject로 대체하는 것을 고려해 보세요.
자동 어셈블리에서 Spring은 @Inject(JSR330 주석)와 @Autowired를 모두 지원합니다. @Inject와 @Autowired 사이에는 약간의 미묘한 차이가 있지만 대부분의 시나리오에서는 서로 바꿔 사용할 수 있습니다.
참고: 1. 자동 조립만 제공하며 주입은 필수 조건이 아닙니다.
2. 자동 조립을 수행하려면 을 가져와
를 지원하거나

---------------를 사용할 수 있습니다. - ------------------------------------------------- - ------------------------------------------------- - ------------------------------------------------- - ----------------

@Qualifier 주석: 종속성 주입 조건을 제한합니다.
@Autowired 주석이 달린 종속성이 컨테이너에서 이에 해당하는 인스턴스 하나만 찾을 수 있으면 모든 것이 정상이지만 동일한 유형의 객체 인스턴스가 여러 개 있는 경우 @Qualifier 주석이 적용됩니다.
Test 클래스에 TestA와 TestB라는 두 가지 구현이 있는 경우 스프링 구성 파일의 구성 코드는 다음과 같습니다.

    <beans>
        <bean id="testA" class="..../TestA" />
        <bean id="testB" class="..../TestB" />
        <bean id="testUtil" class="..../TestUtil" />
    </beans>
로그인 후 복사

TestA를 TestUtil에 삽입하려는 경우 코드 다음과 같습니다.

    public class TestUtil{
        @Autowired
        @Qualifier("testA")
        private Test testA;
        private Test testB;
        .......
    }
로그인 후 복사

----------------------------------- ------ ------------------ ------ ------------------ ------ ------------------ ------ ------
@Resource (name="") 주석: 빈 주입을 구현합니다. 그 기능은 @Autowired 주석과 유사합니다.
1. 이 주석은 JSR250에서 도입되었으므로 사용하기 전에 jsr250 관련 jar 패키지 지원을 가져와야 합니다.

        <!-- jsr250注解包的引入 -->
        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>jsr250-api</artifactId>
            <version>1.0</version>
        </dependency>
로그인 후 복사

2. 관련 클래스를 스프링 구성 파일에 삽입합니다.
testA 클래스를 testUtil 클래스에 도입해야 하는 경우 스프링 구성 파일의 구성 코드는 다음과 같습니다.

    <beans>
        <bean id="testA" class="..../TestA" />
        <bean id="testUtil" class="..../TestUtil" />
    </beans>
3.在 testUtil 中加入
로그인 후 복사

@Resource (name=" ") 참고:
TestA를 TestUtil에 삽입하려는 경우 코드는 다음과 같습니다.

    public class TestUtil{
        @Resource(name=“testA”)
        private Test testA;
        private Test testB;
        .......
    }
로그인 후 복사

참고: @Resource의 이름( name="")은 주입될 객체를 지정하고, testA는 스프링 구성 파일에 정의된 Bean의 ID입니다.
4. 설명 주석이 포함된 다음 두 패키지 중 적어도 하나를 스프링 구성 파일에 도입해야 합니다. 개인적으로 컨텍스트 요소가 마음에 듭니다.

<context:annotation-config />    
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
로그인 후 복사


备注:JSR250注解有 @PostConstruct,@PreDestroy 。
JSR330注解有 @Inject (代替 @AutoWired)、@Named (代替 @Component)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

@ComponentScan(basePackages=“×××××”)注解:启用组件扫描基础包。
1.在 spring 配置文件中加入 实现。

配置完成后,会扫描 com.lh 路径下的所有标注了的相应注解的类,并添加到IOC容器中,实现依赖注入。
备注:加入该元素后,就不需要再向 spring 配置文件中注入相关的类,即不需要再使用如下配置:

    <beans>
        <bean id="testA" class="..../TestA" />
        <bean id="testUtil" class="..../TestUtil" />
    </beans>
로그인 후 복사
로그인 후 복사

2. 默认扫描的注解类型是 @Component ,所以需要在相应的类中应用这个注解进行标注。

    @Component
    public class TestUtil{
            @Autowired
            private Test testA;
            .......
        }
            @Component
    public class TestA{
    private int a;
    private String ss;
    ...
    }
로그인 후 복사


备注:(1)需要在两个类中都标注 @Component 注解。
             (2)该注解是类级别的,它添加在类之上。
             (3)@Component("id号")注解:表明该类会作为组件类,并告知Spring要为这个类创建bean。若id号为空,则默认使用以小写开头的类名!若使用自定义id号,则在后续的引用中需要引入以该id为标记。


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿