欢迎使用CSDN-markdown编辑器

来源:互联网 发布:可以打鼓的软件 编辑:程序博客网 时间:2024/06/03 19:10

Spring相关整理


1:spring是不可替代的

目前技术都是以spring为主,开发和spring整合的jar包

2:spring包含了MVC每个层次 只不过有的层次并没有使用spring的技术
springmvc
spring
springdata\springjdbc

目前常用的就是 springmvc spring mybatis

3:spring常问的方面
IOC AOP

4:IOC
Inversion Of Control 控制反转
DI
Dependence Injection 依赖注入

控制反转是思想 spring只是实现了这种思想的一种框架
依赖注入是实现控制反转的方法 spring使用依赖注入实现了控制反转

a:什么是spring中的IOC?
对象和对象之间的关系不再由对象自身维护,而是由外部容器管理。
eg:
UserSerive{
UserDaoImpl01 userDao = new UserDaoImpl01();//写死在UserSerive中了
addUser(User user){
userDao.addUser(user);
}
}

在UserSerive中为了能够和多个符合需求的UserDaoImpl实现类结耦合
开始面向接口编程
UserSerive{
UserDao userDao = new UserDaoImpl01();
//如果需要变成UserDaoImpl02的对象 则以上代码左边的接口不用变化
//只需要改变右边 创建UserDaoImpl02对象即可
addUser(User user){
userDao.addUser(user);
}
}
但是以上代码还是有问题,new UserDaoImpl01();的代码还是写死在 UserSerive中了
假设改为new UserDaoImpl03()还是需要修改UserSerive代码
即使用了面向接口变成并没有彻底改变耦合问题

为了解决以上UserSerive和UserDao的耦合问题
在UserSerive和UserDao之间加一个中间配置层 配置UserSerive使用哪个UserDao的实现类
这个中间配置层就是一份配置文件或者注解

UserSerive 配置文件 UserDao之间并不直接产生关系
而是由外部的spring管理它们之间的关系
这样做 UserDao的创建控制权就由UserSerive本身发转为由外部的spring容器控制
这就是控制反转

spring容器通过配置文件知道UserSerive需要UserDao对象
它来创建UserDao对象 并把UserDao对象注入到UserSerive中去
则可以认为UserDao对象是依赖 spring容器 注入到UserSerive中去的
这就是依赖注入

b:常见的spring容器之间的关系
spring把所有需要管理的类都叫做bean
所以如果某个类需要给spring管理 则必须在配置文件中配置

spring中默认是2个容器 一个ApplicationContext 一个BeanFactory
ApplicationContext spring容器应用上下文
ClassPathXmlApplicationContext 这是从类路径去查找配置文件
FileSystemXmlApplicationContext 这是从文件系统去查找配置文件

BeanFactory bean工厂 是spring容器的另一种处理方式

BeanFactory和ApplicationContext 是继承关系
ApplicationContext继承了BeanFactory接口

ApplicationContext 开始创建spring容器就创建对象实例
BeanFactory 是使用时才由spring容器创建对象实例

5:spring装载bean特性
a:装载bean方式 重点
1:默认的装载方式
2:动态工厂装载方式
eg:
要编写一个工厂类 用于创建service实例
public class ServiceFactory {
public IStudentService getStudentService(){
return new StudentServiceImpl();
}
}
在配置文件中配置方式:
先要配置工厂类 让spring管理

再配置使用哪个工厂类的哪个方法创建service实例

3:静态工厂装载方式

静态工常装载方式 工厂类不需要实例 只需要调用静态方法
所以工厂类不需要交给spring管理 在配置文件中不用配置
直接配置哪个工厂类的 哪个静态方法创建对象即可
eg:

b:bean的作用域 重点
可以在配置文件中配置bean的作用域
eg:

使用scope属性配置:
singleton 单例 说明这个类在spring容器中只有一个实例 创建spring容器时直接创建实例
prototype 享元 说明这个类每次使用时创建一个实例 在使用时创建实例
request 请求 每次请求单独创建一个实例
session 会话 每次会话单独创建一个实例

默认的作用域是singleton

c:bean的后处理器
通过实现BeanPostProcessor接口实现bean的后处理器
其中有2个方法:
postProcessBeforeInitialization 在bean初始化之前立即执行
postProcessAfterInitialization 在bean初始化完成之后立即执行

后处理器的使用目的:
如果想在某个bean的初始化之前和初始化之后 改变某个方法的行为
或者增强某个方法的行为 可以使用spring提供的后处理器方式

d:配置spring管理bean的初始化方法和销毁方法 重点
eg:

0 0
原创粉丝点击