一、Spring介绍

  • Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。

1.1 三层架构中Spring的位置

  • Spring负责管理项目中的所有对象
  • 可以将Spring看做是项目中对象的管家

1.2 spring一站式框架

  • spring框架属于容器性质,容器中装什么对象就有什么功能,不仅不排斥其他框架,还能帮助其他框架管理对象。
  • aop支持
  • ioc思想
  • spring jdbc
  • junit测试支持

二、Spring搭建

2.1 导包

  • 框架模块结构

  • 要导的包(4+2)

    • 4个包(spring解压后libs)

      1. spring-beans-4.3.9.RELEASE.jar
      2. spring-context-4.3.9.RELEASE.jar
      3. spring-core-4.3.9.RELEASE.jar
      4. spring-expression-4.3.9.RELEASE.jar
    • 2个包日志包(整合包中)

      1. com.springsource.org.apache.commons.logging-1.1.1.jar
      2. com.springsource.org.apache.log4j-1.2.15.jar

2.2 创建一个对象

package a_hello;

public class User {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
    
}

2.3 书写配置文件,注册对象到容器

  • 位置任意(建议放到src下)
  • 配置文件名任意(建议applicationContext.xml

2.3.1 导入约束的步骤

  1. 安装sts插件

  2. Window -> Preferences -> XML Catalog -> add

  1. 配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.springframework.org/schema/beans"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans-4.3.xsd ">
        
        <!-- 管理对象 -->
        <bean name="user" class="a_hello.User"></bean>
    </beans>

2.4 代码测试

  1. 步骤

    1. 开启spring容器 - 加载配置文件。

      • ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    2. 索要对象

      • User user = (User) ac.getBean("user");
package a_hello;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test01 {
    @Test
    public void test01() {
        // 1.开启spring容器 - 加载配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        // 2.索要对象
        User user = (User) ac.getBean("user");
        
        System.out.println(user);
    }
}

三、Spring的重要思想

3.1 IOC(Inverse of Control)

  • 反转控制:对象的创建以及依赖关系的注入交给Spring完成

3.2 DI(Dependency Injection)

  • 依赖关系注入。IOC思想的实现,需要DI做支持

    • 注入方式

      1. set方法织入
      2. 构造方法注入
      3. p命名空间 - 添加命名空间
      4. SpEL注入
    • 注入类型

      1. 值类型注入
      2. 引用类型注入

四、applicationContext&BeanFactory

4.1 BeanFactory接口

  1. spring原始接口。针对原始接口的实现类功能较为单一
  2. BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象

4.2 ApplicationContext

  1. 每次容器启动时就会创建容器中配置的所有对象.并提供更多功能
  2. 从类路径下加载配置文件:ClassPathXmlApplicationContext
  3. 从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")

4.3 结论

  • web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory
Last modification:September 6th, 2019 at 02:58 pm