Spring 框架概述

  • Spring是轻量级的开源的JavaEE框架
  • 可以解决企业应用开发的复杂性
  • 有两个核心部分:IOC 和 Aop
  • IOC:控制反转,把创建对象的过程交给Spring管理
  • Aop:面向切面,不修改源码增加功能
  • Spring特点:
  • 方便解耦,简化开发
  • Aop编程支持
  • 方便测试
  • 方便和其他框架整合
  • 方便事务操作
  • 降低API开发难度

入门案例

Spring5 之 IOC_创建对象

  • IDEA 创建 Java 工程,导入基础jar包
    Spring5 之 IOC_工厂模式_02
  • 创建普通类,创建spring配置文件,配置创建的类
public class User {
public void add(){
System.out.println("hello Spring5");
}
}


<?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">

<bean id="user" class="cn.demo.spring5.domain.User"></bean>
</beans>


  • 获取 User 对象
    Spring5 之 IOC_创建对象_03

IOC容器

  • 控制反转,把对象创建和对象之间的调用过程交给Spring管理,目的是为了降低耦合
  • 底层原理:xml 解析、工厂模式、反射
  • 工厂模式
    Spring5 之 IOC_xml_04
    Spring5 之 IOC_spring_05
  • IOC容器实现的两种方式:(两个接口)
  • BeanFactory:基本实现方式,不推荐使用。加载配置文件时不会创建配置文件中的类的对象
  • ApplicationContext:BeanFactory的子接口,加载配置文件时会创建配置文件中的类的对象。此接口的实现类如下:
    Spring5 之 IOC_配置文件_06
  • Bean 管理:Spring创建对象、注入属性
  • 实现方式 ①:xml
  • 创建对象、set 注入属性
private String name;
private Integer age;

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

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

<!--配置创建对象-->
<bean id="user" class="cn.demo.spring5.domain.User">
<!--set 注入属性-->
<property name="name" value="啊狗"></property>
<property name="age" value="20"></property>
</bean>
  • 创建对象、有参构造方法注入属性
public User(String name, Integer age) {
this.name = name;
this.age = age;
}

<!-- 有参构造注入属性-->
<bean id="user" class="cn.demo.spring5.domain.User">
<constructor-arg name="name" value="曹操"></constructor-arg>
<constructor-arg name="age" value="8000"></constructor-arg>
</bean>
  • 实现方式 ②:注解,创建对象的注解:@Component、@Service、@Controller、@Repository。
  • 导入jar包
    Spring5 之 IOC_创建对象_07
  • 开启注解扫描
    Spring5 之 IOC_xml_08
    Spring5 之 IOC_工厂模式_09
  • 创建类,在类上加入注解
    Spring5 之 IOC_配置文件_10
  • 获取对象
    Spring5 之 IOC_创建对象_11
  • 细节:设置只扫描某个注解或者不扫描注解
    Spring5 之 IOC_spring_12
    Spring5 之 IOC_配置文件_13
  • 注解注入属性:@Autowired(类型注入)、@Qualifier(名称注入)、@Resource、@Value(常见类型注入)
  • 完全注解开发:创建类,加注解@Configuration 作为配置类,@ComponentScan 组件扫描。
  • 外部 Bean 注入:一个类在另外一个类中使用,作为属性,设置 set 方法,xml 标签中使用 ref 属性引用。
  • Bean 管理:注入引用数据类型,数组、list 集合、Map、Set
    Spring5 之 IOC_配置文件_14
    Spring5 之 IOC_创建对象_15
    Spring5 之 IOC_spring_16
  • 工厂Bean(FactoryBean):配置文件中类型和实际返回类型可以不同。创建类实现 FactoryBean 接口,实现接口方法,在 getObject 方法中定义返回类型。
  • Bean作用域:Spring创建对象默认是单例的
  • 设置为多例
    Spring5 之 IOC_xml_17
  • singleton 和 prototype 区别
    Spring5 之 IOC_工厂模式_18
  • Bean 生命周期
    Spring5 之 IOC_配置文件_19
    Spring5 之 IOC_spring_20
  • Spring 配置文件引入外部文件(数据库连接参数的 properties 文件)
  • properties 文件
    Spring5 之 IOC_xml_21
  • context 命名空间
    Spring5 之 IOC_spring_22
  • 引入外部文件,配置连接池
    Spring5 之 IOC_spring_23