初期スプリング

28227 ワード

1.Springとは
SpringはRod Johnsonによって作成されたオープンソースフレームワークです.エンタープライズアプリケーション開発の複雑さを解決するために作成されました.
Springは基本的なJavaBeanを使って、以前はEJBでしかできなかったことを完成します.しかしSpringの用途はサーバ側の開発に限られない.単純性、テスト性、および緩和結合の観点から、どのJavaアプリケーションもSpringから利益を得ることができます.目的:企業応用開発の複雑性機能を解決する:基本的なJavaBeanをEJBの代わりに使用し、より多くの企業応用機能範囲を提供した:いかなるJava応用もjavabean(javaオブジェクト)を詰めるための容器フレームワークであり、中間層フレームワーク(万能ゴム)はStrutsとhibernateを接着して運用するなどの接続作用を果たすことができる.簡単に言えばSpringは軽量レベルの制御反転(IoC)と切面(AOP)向けの容器フレームである.
2.制御反転とは
制御反転(Inversion of control)はオブジェクト向けプログラミングにおける設計原則であり、コード間の結合を低減することができ、プログラム開発において、インスタンスの作成は呼び出し者によって管理されるのではなく、Springコンテナによって作成され、制御権はプログラムコードからSpringコンテナに移行し、制御権が反転する.第一歩:springIDEプラグインを追加し、関連依存性を構成する必要がある
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spring-study</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- Spring       -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <!--         -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
ステップ2:プラグインSpringのxmlファイルApplications.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
                           https://www.springframework.org/schema/beans/spring-beans.xsd">
 </beans>
ステップ3:注入方式に依存してDuckとDuck 2クラスを作成する
package frank;

public class Duck {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Duck{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

package frank;

public class Duck2 {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Duck2(String n, Integer a) {
        this.name = n;
        this.age = a;
    }

    @Override
    public String toString() {
        return "Duck{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}


<!--   bean    bean  ,Spring bean     id      ,id   bean   
    Spring    id  bean       id,       id
          -->
    <!--                 ,                  -->
    <!--      -->
    <bean id="bit" class="java.lang.String">
        <constructor-arg value="   "/>
    </bean>
    <!--    (setter    )-->
    <!-- <bean class="java.lang.String"></bean>-->
    <bean id="d1" class="frank.Duck">
        <property name="name" value="LadyGaga"></property>
        <property name="age" value="18"/>
    </bean>
	<!--         -->
    <bean id="d2" class="frank.Duck2">
        <constructor-arg name="n" value="  "/>
        <constructor-arg name="a" value="2"/>

    </bean>
テストのクラスを書く
import frank.Duck;
import frank.Duck2;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        //spring       ApplicationContext      (       Bean  ,      )
        // ClassPathXmlApplicationContext  classpath  ,    xml  (    )
        //                  .
        ApplicationContext context = new
                ClassPathXmlApplicationContext("applications.xml");
        //  bean   (id)  bean  
        String bit =(String) context.getBean("bit");
		//String bit2= (String) context.getBean("java.lang.String#0");
        System.out.println(bit);
		//System.out.println(bit2);
        //      bean  
        String bit2 = context.getBean(String.class);
        System.out.println(bit2);
        Duck d1 = (Duck) context.getBean("d1");
        System.out.println(d1);
        Duck2 d2 = (Duck2) context.getBean("d2");
        System.out.println(d2);
    }
}