[Frühlingsnotizen] Fassen Sie das erste Kapitel des Frühlings zusammen

1. Einführung in den Frühling

1.1 Einführung in den Frühling

Spring ist ein Open-Source-Framework auf Designebene. Es löst das Problem der losen Kopplung zwischen der Geschäftslogikschicht und anderen Schichten und implementiert so die schnittstellenorientierte Programmieridee in der gesamten Systemanwendung. Spring ist ein leichtes Java-Entwicklungsframework, das 2003 von Rod Johnson entwickelt wurde. Einfach ausgedrückt ist Spring ein mehrschichtiges, leichtgewichtiges JavaSE/EE-Full-Stack-Open-Source-Framework (aus einer Hand).
Spring ist ein sehr aktives Open-Source-Framework, das ein mehrschichtiges JavaEE-System basierend auf IOC und AOP aufbaut, um die Abhängigkeiten zwischen Projektkomponenten zu trennen. Sein Hauptziel ist die Vereinfachung der Unternehmensentwicklung.
Einfach ausgedrückt ist Spring ein mehrschichtiges, leichtgewichtiges JavaEE/EE-Full-Stack-Open-Source-Framework (aus einer Hand). Hohe Kohäsion und geringe Kopplung! ! !
Frühlingsquelle, Quellwasser! Der Frühling von JAVAEE ist da!
Fügen Sie hier eine Bildbeschreibung ein

1.2 Frühlingsursprung

In dem 2002 von Rod Johnson herausgegebenen Buch == „Expert one on one J2EE design and development“ == stellte er den Status quo des JavaEE-System-Frameworks in Frage, das aufgebläht, ineffizient und von der Realität abgekoppelt sei, und versuchte aktiv, dies zu erforschen Erneuern Sie das Frühlingslogo. Basierend auf diesem Buch schrieb er das Interface21-Framework, ein leichtes Entwicklungsframework, das versucht, das Dilemma der traditionellen J2EE-Entwicklung zu durchbrechen, indem er von den tatsächlichen Anforderungen ausgeht und sich auf Leichtigkeit, Geschicklichkeit und einfache Entwicklung, Tests und Bereitstellung konzentriert. Das Spring-Framework basiert auf dem Interface21-Framework. Es wurde neu gestaltet und kontinuierlich bereichert. Am 24. März 2004 wurde die offizielle Version 1.0 veröffentlicht. Im selben Jahr veröffentlichte er ein klassisches Meisterwerk „Expert one-on-one J2EE Development without EJB“, das in der Java-Welt für Aufruhr sorgte und die Art und Weise, wie Java-Entwickler über Programmierung und Entwicklung denken, ständig veränderte. In diesem Buch analysiert und verneint der Autor auf der Grundlage seiner langjährigen, reichen Praxiserfahrung die verschiedenen umständlichen und aufgeblähten Strukturen von EJB nacheinander und ersetzt sie auf prägnante und praktische Weise. Bisher ist die Schlacht gewonnen,Rod Johnson wurde zu einer Meisterfigur, die die Java-Welt veränderte

1.3 Die Rolle des Frühlings

  • Dachte das IOCBequeme Entkopplung und vereinfachte Entwicklung: Spring ist eine große Fabrik, die die gesamte Objekterstellung und Abhängigkeitspflege für den Spring-Container verwalten kann!

  • Unterstützung der AOP-Programmierung (aspektorientierte Programmierung).: Spring bietet aspektorientierte Programmierung, mit der Funktionen wie das Abfangen von Berechtigungen und die Betriebsüberwachung des Programms problemlos implementiert werden können!

  • Unterstützung für deklarative Transaktionen: Sie müssen die Transaktionsverwaltung nur über die Konfiguration abschließen, ohne SSM SSS SSH manuell programmieren zu müssen

  • Bequemes Programmtesten: Spring unterstützt Junit4 und Spring-Programme können einfach durch Annotationen getestet werden
    Frühlingstest: Das Testmodul des Frühlings!

  • Bequeme Integration verschiedener hervorragender Frameworks: Spring schließt verschiedene hervorragende Open-Source-Frameworks nicht aus und bietet direkte Unterstützung für verschiedene hervorragende Frameworks (z. B. Struts2, Hibernate, MyBatis, Quartz (zeitgesteuerte Aufgaben) usw.).
    Das Spring-Framework kann andere Frameworks nahtlos integrieren: MyBatis, Hibernate, Redis, Activiti, SpringMVC, SpringDATA. . .
    Solange es sich um ein Framework handelt, kann Spring damit umgehen!

  • Reduzieren Sie die Schwierigkeit bei der Verwendung der JavaEE-API: Spring bietet Pakete für APIs, die in der JavaEE-Entwicklung sehr schwierig zu verwenden sind (JDBC, JavaMail, Remote-Aufrufe usw.), wodurch die Schwierigkeit bei der Verwendung dieser APIs erheblich verringert wird

1.4 Die Zusammensetzung des Frühlings

Die im Spring-Framework enthaltene Funktionalität besteht aus ca20 ModuleKomposition. Diese Module sind in Kerncontainer, Datenzugriff/-integration, Web, AOP (Aspektorientierte Programmierung), Geräte, Messaging und Tests unterteilt

2. Die Rolle des Frühlings

Spring kann das Kopplungsproblem zwischen der Geschäftslogikschicht und anderen Schichten lösen und ist auch der Klebstoff eines Frameworks, das es ermöglicht, die Idee der schnittstellenorientierten Programmierung durch das gesamte System zu laufen.Eigenschaften: Hohe Kohäsion, geringe Kopplung, Designschichtgerüst!

2.1 IOC-Idee, AOP-Programmierung, deklarative Transaktionsunterstützung, nahtlose Integration des Frameworks mit anderen Frameworks

2.1.1 Aufbau einer Frühlingsumgebung
Fügen Sie hier eine Bildbeschreibung ein

<!-- pom.xml的配置 -->
   <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
<!--以下是在resources中创建的applicationContext.xml文件-->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--Spring AOP DI-->
    <!--spring容器创建对象,也是通过构造方法创建的,默认创建对象的方式是通过无参构造,依赖注入靠set方法-->
    <!--id是创建的对象的名字class表示对象是从Person这个类创建出来的-->
    <!--id="p1"(大名只能取一个) name="(小名可以取多个)"-->
    <!--scope(作用域属性):singleton单例 (默认)/prototype多例-->
    <!--lazy-init属性 对象的创建时机的设置 值:true(懒加载:用时才创建)/false(一启动就创建)-->
    <bean id="p1" name="person1,person2" class="com.swjd.bean.Person" scope="singleton"
    init-method="init" destroy-method="destroy">
        <!--DI就是给对象附属性值-->
        <property name="id" value="857"/>
        <property name="name" value="吕布"/>
        <property name="sex" value="男"/>
    </bean>
    <bean id="p2" name="person3,person4" class="com.swjd.bean.Person" scope="prototype" lazy-init="false">
        <!--DI就是给对象附属性值-->
        <property name="id" value="857"/>
        <property name="name" value="貂蝉"/>
        <property name="sex" value="女"/>
    </bean>
    <!--方式二:通过有参构造创建对象-->
    <bean id="p3" class="com.swjd.bean.Person">
        <constructor-arg index="0" type="int" value="859"/>
        <constructor-arg index="1" type="java.lang.String" value="艾希"/>
        <constructor-arg index="2" type="java.lang.String" value="女"/>
    </bean>
    <!--方式三:静态工厂-->
    <bean id="p4" class="com.swjd.beanfactory.PersonFactory" factory-method="createFactory"/>
    <!--方式四:通过非静态工厂创建对象-->
    <bean id="factory" class="com.swjd.beanfactory.NoStaticFactory"/>
    <bean id="p5" factory-bean="factory" factory-method="createFactory"/>
</beans>

2.1.2 Was sind IOCs?

Umkehrung der Kontrolle, wird die Instanzerstellung des Aufrufers nicht mehr vom Aufrufer selbst erstellt, sondern vom Spring-Container. Dieser Prozess überträgt die Kontrolle über die Instanzerstellung vom Anwendungscode auf den externen Container, und die Kontrolle hat sich geändert.

2.1.3 Was ist DI?

Abhängigkeitsinjektion: Um Objekten Attributwerte zuzuweisen, achten Sie darauf, leere Konstruktionsmethoden und Get/Set-Methoden beizubehalten!

2.1.4 Die Rolle der vier Attribute im Bean-Tag:

(1) 1.Namensattribut: Benennen Sie das Objekt. Es können mehrere Namen gleichzeitig verwendet werden, verschiedene Objekte können jedoch nicht wiederholt werden

(2) 2.Scope-Objektbereichsattribute:

  • Scope = „Singleton“ Standardwert, das vom Spring-Container erstellte Objekt ist standardmäßig ein Singleton!
  • Das von „scope="prototype"“ erstellte Objekt besteht aus mehreren Instanzen (bei jeder Verwendung des Objekts wird eine zusätzliche neue erstellt).
  • Scope = „Session“ bedeutet, dass die Objekte im Spring-Container im Rahmen einer Sitzung eins behalten und dasselbe teilen!
  • Scope = „Anfrage“ bedeutet, dass die Objekte im Spring-Container im Rahmen einer Anfrage eins behalten und dasselbe teilen
    Hinweis: Die beiden letztgenannten können nur in Webprojekten verwendet werden

(3) Objekt-Lazy-Erstellung (nur wirksam, wenn Scope = „Singleton“). Lazy-Init gibt die Ladezeit des Objekts an (true: Lazy-Loading (wird bei Verwendung des Objekts erstellt); False (Laden, sobald das Spring-Framework gestartet wird). )

(4) 4. Die Methode, die aufgerufen wird, nachdem das Objekt erstellt wurde, und die Methode, die aufgerufen wird, nachdem das Objekt zerstört wurde
init-method="Die Methode, die aufgerufen wird, nachdem das Objekt erstellt wurde"
destroy-method="Die Methode, die aufgerufen wird, nachdem das Objekt zerstört wurde "

2.1.5 Vier Möglichkeiten, Objekte im Frühling zu erstellen?

(1) Erstellt mit einem Konstruktor ohne Argumente

<!--方式1:无参构造方法创建对象-->
 <bean id="p1" name="person1,person2" class="com.swjd.bean.Person" scope="singleton" lazy-init="true" init-method="init"  destroy-method="destroy">
     <property name="id" value="957"></property>
     <property name="name" value="貂蝉"></property>
     <property name="sex" value="女"></property>
  </bean>

(2) Erstellen Sie ein Objekt mit einem Konstruktor mit Parametern

<!--方式2:用带参的构造方法创建对象-->
<bean id="p3" class="com.swjd.bean.Person">
    <constructor-arg index="0" type="int" value="9528"></constructor-arg>
    <constructor-arg index="1" type="java.lang.String" value="德玛西亚"></constructor-arg>
    <constructor-arg index="2" type="java.lang.String" value="男"></constructor-arg>
</bean>

(3) Erstellen Sie Objekte mit statischen Fabriken

<!--方式3:用静态工厂创建对象-->
<bean id="p4" class="com.swjd.beanfactory.PersonFactory" factory-method="createPerson"></bean>

(4) Erstellen Sie Objekte mit nicht statischen Fabriken

<!--方式4:用非静态工厂创建对象-->
<bean id="noStaticfactory" class="com.swjd.beanfactory.NoStaticPersonFactory"></bean>
<bean id="p5" factory-bean="noStaticfactory" factory-method="createPerson"></bean>

2.1.6 4 Möglichkeiten der Spring-Abhängigkeitsinjektion?

(1) Rufen Sie die Set-Methodeninjektion auf

<bean id="m1" class="com.swjd.bean.Man">
    <!--第一种:依赖注入的方式:set注入-->
    <property name="id" value="1"/>
    <property name="name" value="刘德华"/>
    <property name="age" value="48"/>
   <!-- <property name="dog" ref="d1"/>-->
    <property name="dog">
        <ref bean="d1"/>
    </property>
</bean>

(2). Rufen Sie die Konstruktorinjektion mit Parametern auf

<bean id="m2" class="com.swjd.bean.Man">
    <!--第二种:依赖注入的方式:带参的构造方法-->
    <constructor-arg index="0" type="int" value="2"/>
    <constructor-arg index="1" type="java.lang.String" value="蔡徐坤"/>
    <constructor-arg index="2" type="int" value="20"/>
    <constructor-arg index="3" type="com.swjd.bean.Dog" ref="d1"/>
</bean>

(3).P-Namespace-Injektion (das Wesentliche ist immer noch die Set-Injektion, die Syntax ist prägnanter)

<bean id="m3" class="com.swjd.bean.Man" p:id="3" p:name="八戒" p:age="108" p:dog-ref="d1"></bean>

(4).Spel表达式注入
<bean id="m4" class="com.swjd.bean.Man">
    <property name="id" value="#{m1.id}"></property>
    <property name="name" value="#{m2.name}"></property>
    <property name="age" value="#{m3.age}"></property>
</bean>

Grundtyp

Injektion komplexer Typen:

(1) Injektionsobjekt

(2) Injizieren Sie das Array

<property name="hobbies" >
        <array>
            <value>123</value>
            <value>123</value>
        </array>
    </property>

(3) Sammlung injizieren

List:
<property name="subject">
        <list>
            <value>1234</value>
            <value>1234</value>
        </list>
    </property>
    
Set:
 <property name="boyFriends">
        <set>
            <value>12345</value>
            <value>12345</value>
        </set>
    </property>

(4) Karte injizieren

  <property name="map">
        <map>
            <entry key="cn" value="中国"/>
            <entry key="ru" value="俄罗斯"/>
        </map>
    </property>

Supongo que te gusta

Origin blog.csdn.net/weixin_46319117/article/details/105349164
Recomendado
Clasificación