1、IOC
1.1、IOC容器
1.1.1、IOC思想
ICO:Inversion of Controller,翻译过来就是 反转控制
例如:自己做饭,需要自己全程参与。现在点外卖就可以了
DI:Dependency injection,翻译过来就是依赖注入。DI实现ICO
1.1.2、IOC容器在Spring中的实现
Spring 的 IOC 容器就是 IOC 思想的一个落地产品实现。IOC 容器中管理的组件也叫做 bean。在创建bean 之前,首先需要创建IOC 容器。Spring 提供了 IOC 容器的两种实现方式:
(1)BeanFactory
这是IOC容器的基本实现,是Spring内部使用的接口。面向Spring本身,不提供给开发人员使用。
(2)ApplicationContex
BeanFacory的子接口,提供了更多的高级特性。面向Spring的使用者,几乎所有场合都使用Applicationcontext而不是底层 BeanFactory。
1.2、基于XML管理bean
1.2.1、实验一:IOC入门案例
(1)创建maven module
(2)引入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
(3) 创建类HelloWorld
(4)创建Spring的配置文件
(5)在Spring配置文件中配置bean
(6)创建测试类
1.2.2 、DI入门案例
将HelloWorld1注入到HelloWorld2中
(1)创建maven module
(2)引入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
(3)创建HelloWorld1
(4)创建HelloWorld2
(5)在Spring配置文件中配置bean
(6)测试
1.3、bean配置
1.3.1、bena的别名
注意。别名和id不能重复。
1.3.2、控制bean的创建是单例还是多例(默认为单例)
为什么bean默认是单例。
1.4、bean的生命周期
1.4.1、通过配置初始化方法和销毁方法
(1)创建初始化方法和销毁方法
(2)配置文件
(3)测试类实现方法
1.4.2、实现接口完成其声明周期
1.5、依赖注入
1.5.1、setter引用注入
将HelloWorld1,HelloWorld2注入到HelloWorld3
1.5.2、setter基本注入
将基本数值(int,string)注入到HelloWorld1类中
1.5.3、构造器引用注入---了解
1.5.4、构造器基本注入---了解
1.5.5、自动装配---了解
1.5.6、集合注入---了解
<bean>
<property name="array"> //注入数组
<array>
<value>1</value>
<value>1</value>
</array>
</property>
<property name="list"> //注入List
<list>
<value>1</value>
<value>1</value>
</list>
</property>
<property name="set"> //注入set
<set>
<value>1</value>
</set>
</property>
<property name="map"> //注入map
<map>
<entry key="city" value="长沙"></entry>
</map>
</property>
<property name="properties"> //注入map
<props>
<prop key="city">长沙</prop>
</props>
</property>
</bean>
2、注解开发
2.1、注解开发定义bean
2.1.1、使用@Component注解定义bean
2.1.2、核心配置文件中通过组件扫描加载bean
2.1.3、测试
2.1.4、Spring提供@Component注解的三个衍生注解
@Controller:用于表现层bean定义
@Service:用于业务层bean开发
@Repository:用于数据层bean定义
2.2、纯注解开发
2.2.1、将applicaionContent.xml配置文件,改为配置类
创建一个配置类放在config.SpringConfig配置类中,使用Configuration,和包扫描ComponentScan
2.2.2、将测试类中的配置文件引入的方式改为配置类引入
2.3、注解开发bean作用范围与生命周期管理
2.3.1、配置单例或多例---@Scope("prootype")
2.3.2、生命周期
2.4、依赖注入
2.4.1、纯注解开发将HelloWorld1注入到HelloWorld2的引用注入
除了@Autowired注解之外还有@Qualifier注解他要配合@Autowired使用。一般也不用@Qualifier
2.4.2、纯注解开发读取properties文件注入基本数据
(1)新建jdbcpropertie文件
(2)配置类中导入properies文件
(3)使用@Value注解注入值
2.5、注入第三方bean
2.5.1、注入方式一
(1)在pom.xml文件中倒入第三方jar用druid来演示
(2)在配置文件中使用@Bean注解来管理
(3)测试
2.5.2、方式二、将其从配置文件中拿出使用@Configuration
(1)新建一个专门管理Druid的类,也使用@Configuration注解,让其也成为配置类
(2)在Spring配置文件中,使用包扫描技术扫描Druid的配置文件
(3)测试
2.5.3、方式三、将其从配置文件中拿出使用@Import
(1)新建一个专门管理Druid的类,也使用@Configuration注解,让其也成为配置类
(2)在Spring配置文件中,使用Import导入Druid的配置文件
(3)测试
2.5.4、方式4、将其从配置文件中拿出使用@Import,并注入普通值
3、AOP
面向切面编程,一种编程范式、指导开发者如何组织程序结构
在不惊动原始设计的基础上为其添加功能
3.1、AOP入门案例
3.1.1、导入坐标(pom.xml)
3.1.2、制作连接点方法(原始操作,Dao接口实现类)--使用HelloWorld为例
3.1.3、制作共性功能(通知类与通知)
新建一个aop.MyAdvice的通知类
3.1.4、定义切入点
3.1.5、绑定切入点与通知关系(切面)
3.1.6、测试
3.2、切入点表达式
3.3、AOP通知类型
3.4、AOP通知获取数据
4、Spring事务
事务作用:在数据层保障一系列的数据操作同时成功同失败
Spring事务作用:在数据层或业务层保障一系列的数据库操作同时成功同失败
4.1、事务的属性