ホームページ  >  記事  >  类库下载  >  スプリングの注釈

スプリングの注釈

高洛峰
高洛峰オリジナル
2016-10-17 09:19:121430ブラウズ

選択肢が増えることは良いことでしょうか?

10 年以上にわたる急速な開発とアップデートを経て、Spring はそのユニークな革新性とより多くの選択肢を多くのファンにもたらしました。例えば、Spring Bean のアセンブリ (XML での明示的な設定、Java での明示的な設定、暗黙的な Bean 検出メカニズムと自動アセンブリ)、アノテーションの多様化 (基本的なアノテーション、jsr250、jsr330) などです。

そして、これほど多くの選択を繰り返すことが本当に良いことなのだろうか?これは、学習と習得にかかるコストが増加し、習得がより困難になっているということでしょうか?
例え: あなたも国を救うことができます。スプリングというサイコパスは、医学を勉強していると国を救うことができると言います (XML の明示的な構成)。国 (Java の表示構成) を入力すると、キャプチャと射撃の練習に成功しようとしているときに、国を教育して救うためのより簡単な方法 (Bean の自動組み立て) があることを教えてくれます。
初心者として、私は個人的に、サーブレット、JSP、Struts を学んでから今春にかけて、穴はどんどん大きくなっていると思います。

早速、いくつかの簡単なアノテーションを紹介しましょう:

@Autowired アノテーション: 自動アセンブリを実現します。
1. 次の 2 つのクラスを 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 が Bean の依存関係を自動的に満たすプロセスで、Spring 内の他の Bean を検索します。特定の Bean の要件に一致するアプリケーション コンテキスト。

@Autowired アノテーションはコンストラクターだけでなく、メソッドやプロパティでも使用できます。一致する Bean がない場合、Spring はアプリケーション コンテキストの作成時に例外をスローします。例外を回避するには、@Autowired の required 属性を false に設定します。ただし、required 属性を false に設定する場合は注意が必要です。コードに null チェックがない場合、この未アセンブルのプロパティにより NullPointerException が発生する可能性があります。
@Autowired は Spring 固有のアノテーションです。自動アセンブリ タスクを完了するためにコード内のあらゆる場所で Spring 固有のアノテーションを使用したくない場合は、それを @Inject に置き換えることを検討できます。
自動アセンブリでは、Spring は @Inject (JSR330 アノテーション) と @Autowired の両方をサポートします。 @Inject と @Autowired の間には微妙な違いがいくつかありますが、ほとんどのシナリオで互換性があります。
注: 1. 自動アセンブリのみが提供され、注入は前提条件ではありません。
2.自動アセンブリを達成するには、
サポートをインポートする必要があります。または、------------------------------------------ ------------------------ ---------------------------- ------------------------ ---------------------------- ---------------------- ------------------
@Qualifier アノテーション: 条件を制限する依存性の注入。
@Autowired アノテーションが付けられた依存関係がコンテナー内でそれに対応するインスタンスを 1 つだけ見つけることができる場合は、すべて問題ありませんが、同じタイプのオブジェクト インスタンスが複数ある場合は、@Qualifier アノテーションがその依存関係に対して機能します。
Test クラスに TestA と TestB の 2 つの実装がある場合、Spring 構成ファイルの構成コードは次のとおりです:

    <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="") アノテーション: Bean の実装。その機能は @Autowired アノテーションに似ています。
1. このアノテーションは JSR250 によって導入されたため、使用する前に jsr250 関連の jar パッケージのサポートをインポートする必要があります:

        <!-- jsr250注解包的引入 -->
        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>jsr250-api</artifactId>
            <version>1.0</version>
        </dependency>

2. 関連するクラスを Spring 構成に追加します。 file :
testA クラスを testUtil クラスに導入する必要がある場合、Spring 構成ファイルの構成コードは次のとおりです:

    <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 は Spring 構成ファイルで定義された Bean の ID です。
4. アノテーションを説明する次の 2 つのパッケージの少なくとも 1 つを Spring 構成ファイルに導入する必要があります。個人的には context 要素が好きです。

<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为标记。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。