Spring 框架概述
- Spring是轻量级的开源的JavaEE框架
- 可以解决企业应用开发的复杂性
- 有两个核心部分:IOC 和 Aop
- IOC:控制反转,把创建对象的过程交给Spring管理
- Aop:面向切面,不修改源码增加功能
- Spring特点:
- 方便解耦,简化开发
- Aop编程支持
- 方便测试
- 方便和其他框架整合
- 方便事务操作
- 降低API开发难度
入门案例
- IDEA 创建 Java 工程,导入基础jar包
- 创建普通类,创建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 对象
IOC容器
- 控制反转,把对象创建和对象之间的调用过程交给Spring管理,目的是为了降低耦合
- 底层原理:xml 解析、工厂模式、反射
- 工厂模式
- 工厂模式
- IOC容器实现的两种方式:(两个接口)
- BeanFactory:基本实现方式,不推荐使用。加载配置文件时不会创建配置文件中的类的对象
- ApplicationContext:BeanFactory的子接口,加载配置文件时会创建配置文件中的类的对象。此接口的实现类如下:
- 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>
- 实现方式 ①:xml
- 外部 Bean 注入:一个类在另外一个类中使用,作为属性,设置 set 方法,xml 标签中使用 ref 属性引用。
- Bean 管理:注入引用数据类型,数组、list 集合、Map、Set
- 工厂Bean(FactoryBean):配置文件中类型和实际返回类型可以不同。创建类实现 FactoryBean 接口,实现接口方法,在 getObject 方法中定义返回类型。
- Bean作用域:Spring创建对象默认是单例的
- 设置为多例
- singleton 和 prototype 区别
- 设置为多例
- Bean 生命周期
- Spring 配置文件引入外部文件(数据库连接参数的 properties 文件)
- properties 文件
- context 命名空间
- 引入外部文件,配置连接池
- properties 文件