Heim >类库下载 >java类库 >Frühlingsanmerkung

Frühlingsanmerkung

高洛峰
高洛峰Original
2016-10-17 09:19:121516Durchsuche

Ist es gut, mehr Auswahl zu haben?

Nach mehr als zehn Jahren rasanter Entwicklung und Aktualisierung hat Spring mit seiner einzigartigen Innovation und mehr Auswahlmöglichkeiten eine große Anzahl von Fans angezogen! Zum Beispiel die Zusammenstellung von Spring Beans (explizite Konfiguration in XML, explizite Konfiguration in Java, impliziter Bean-Erkennungsmechanismus und automatische Assemblierung), Diversifizierung von Annotationen (grundlegende Annotationen, jsr250, jsr330) und so weiter!

Ist es wirklich gut, so viele wiederholte Entscheidungen zu haben? Bedeutet dies auch, dass die Kosten für das Lernen und Beherrschen gestiegen sind und es schwieriger wird, es zu meistern?
Nehmen wir eine Analogie: Ein Psychopath namens Spring sagt Ihnen, dass Sie das Land retten können, indem Sie Medizin praktizieren (explizite XML-Konfiguration). das Land durch den Beitritt zur Armee (Java-Anzeige) Konfiguration), wenn Sie im Begriff sind, das Capture-Schießen erfolgreich zu üben, werden Sie erfahren, dass es tatsächlich einen einfacheren Weg gibt, das Land zu erziehen und zu retten (automatische Zusammenstellung von Bohnen)!
Als Anfänger denke ich persönlich, dass die Grube vom Erlernen von Servlet über JSP bis hin zu Struts und jetzt dem Frühling immer größer wird!

Lassen Sie uns ohne weiteres ein paar einfache Anmerkungen einführen:

@Autowired-Anmerkung: Automatische Montage realisieren.
1. Die folgenden zwei Klassen müssen in die Spring-XML-Konfigurationsdatei eingefügt werden:

    <beans>
        <bean id="testA" class="..../TestA" />
        <bean id="testUtil" class="..../TestUtil" />
    </beans>

2. Wenn Sie die testA-Klasse in der testUtil-Klasse zusammenstellen möchten, können Sie diese verwenden it in der testUtil-Klasse @Autowired Annotation;
Wenn Sie TestA in TestUtil einfügen möchten, lautet der Code wie folgt:

    public class TestUtil{
        @Autowired
        private Test testA;
        .......
    }

Einfach ausgedrückt ist Autowiring eine Möglichkeit für Spring, automatisch zu arbeiten Erfüllen Sie Bean-Abhängigkeiten. Im Spring-Anwendungskontext werden andere Beans gefunden, die den Anforderungen einer bestimmten Bean entsprechen.
@Autowired-Annotation kann nicht nur für Konstruktoren, sondern auch für Methoden und Eigenschaften verwendet werden. Wenn keine passende Bean vorhanden ist, löst Spring beim Erstellen des Anwendungskontexts eine Ausnahme aus. Um Ausnahmen zu vermeiden, können Sie das erforderliche Attribut von @Autowired auf „false“ setzen: Sie müssen jedoch vorsichtig sein, wenn Sie das erforderliche Attribut auf „false“ setzen. Wenn Ihr Code keine Nullprüfung enthält, kann diese nicht zusammengesetzte Eigenschaft eine NullPointerException verursachen.
@Autowired ist eine Spring-spezifische Annotation. Wenn Sie nicht überall in Ihrem Code Spring-spezifische Annotationen verwenden möchten, um automatische Assemblierungsaufgaben durchzuführen, können Sie sie durch @Inject ersetzen.
Bei der automatischen Assemblierung unterstützt Spring sowohl @Inject (JSR330-Annotation) als auch @Autowired. Obwohl es einige subtile Unterschiede zwischen @Inject und @Autowired gibt, sind sie in den meisten Szenarien austauschbar.
Hinweis: 1. Es bietet nur eine automatische Montage und keine Injektion.
2. Um eine automatische Montage zu erreichen, müssen Sie importieren, um
zu unterstützen, oder Sie können

verwenden --------------- - ------------------------------------------------- - ------------------------------------------------- - ------------------------------------------------- - --------------

@Qualifier-Anmerkung: Beschränken Sie die Bedingungen für die Abhängigkeitsinjektion.
Wenn die mit @Autowired annotierte Abhängigkeit nur eine ihr entsprechende Instanz im Container finden kann, ist alles in Ordnung, aber wenn mehrere Objektinstanzen desselben Typs vorhanden sind, gilt die @Qualifier-Annotation.
Wenn die Testklasse zwei Implementierungen hat, TestA und TestB, lautet der Konfigurationscode in der Spring-Konfigurationsdatei wie folgt:

    <beans>
        <bean id="testA" class="..../TestA" />
        <bean id="testB" class="..../TestB" />
        <bean id="testUtil" class="..../TestUtil" />
    </beans>

Wenn Sie TestA in TestUtil einfügen möchten, ist der Code lautet wie folgt:

    public class TestUtil{
        @Autowired
        @Qualifier("testA")
        private Test testA;
        private Test testB;
        .......
    }

---------------------------------- ------ -------------------------------------------- ------ -------------------------------------------- ------ -------------------------------------------- ------ ------
@Resource (name="") Annotation: implementiert Bean-Injection. Seine Funktion ähnelt der @Autowired-Annotation.
1. Da diese Anmerkung von JSR250 eingeführt wurde, müssen Sie die Unterstützung des JSR250-bezogenen JAR-Pakets importieren, bevor Sie den folgenden Inhalt zur pom.xml-Datei hinzufügen:

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

2. Fügen Sie verwandte Klassen in die Spring-Konfigurationsdatei ein:
Wenn die testA-Klasse in die testUtil-Klasse eingeführt werden muss, lautet der Konfigurationscode in der Spring-Konfigurationsdatei wie folgt:

    <beans>
        <bean id="testA" class="..../TestA" />
        <bean id="testUtil" class="..../TestUtil" />
    </beans>
3.在 testUtil 中加入

@Resource (name=" ") Hinweis:
Wenn Sie TestA in TestUtil einfügen möchten, lautet der Code wie folgt:

    public class TestUtil{
        @Resource(name=“testA”)
        private Test testA;
        private Test testB;
        .......
    }

Hinweis: Der Name in @Resource ( name="") gibt das zu injizierende Objekt an, testA ist die ID der Bean, die in der Spring-Konfigurationsdatei definiert ist.
4. Mindestens eines der beiden folgenden Pakete mit Erklärungsanmerkungen muss in die Federkonfigurationsdatei eingefügt werden. Basierend auf dem Prinzip der Faulheit gefällt mir persönlich das Kontextelement.

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn