初始Spring

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>

第二步:插件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>

第三步:依赖注入的方式
创建Duck和Duck2类

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);
    }
}

你可能感兴趣的:(初始Spring)