Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
参考:https://blog.csdn.net/qq_22583741/article/details/79589910
一:IoC(Inversion of Control)控制反转,将创建对象实例反转给spring,交给IoC容器
1,底层原理:工厂模式+配置文件+反射
小测试:
2,DI(依赖注入)
面向对象有:
- 依赖 a 依赖b (a中有b,比如 a中的方法有 public void save(b) )
- 继承 a is b(a继承b)
- 聚合 a has b(a聚合b)
主要就是对象(应用程序)依赖IoC容器向应用程序中注入其所需要的外部资源(对象,资源,变量)
参考:https://blog.csdn.net/sinat_21843047/article/details/80297951
3,Spring工厂类
- BeanFactory (老版本模式)
在调用 getBean(类ID) 方法时才会创建该类
- ApplicationContext(先在较常用的Spring工厂类)
在加载配置文件的时候就会实例化IoC容器中的类
在最底层有两个实现类
- ClassPathXmlApplicationContext("applicationContext.xml") 加载类路径下即src下的配置文件(常用)
- FileSystemXmlApplicationContext("applicationContext.xml") 加载系统文件下即磁盘下的配置文件
4,Spring的配置
<bean />的属性配置(了解)
id:配置的类的名字,有唯一性约束,不能有特殊符号
name:也是配置的类的名字,没有唯一性约束,可以有特殊符号
class:配置的类的全路径
配置的类的生命化周期:
在配置的类中写 init() ,和 destroy() ,在创建类实例的时候会自动执行 init() 方法,当工厂关闭时,会执行destroy()方法(前提是默认创建的类是单例)
<bean/>的作用范围配置(重点)
对scape属性的配置
- singleton(默认值,交给IoC容器创建的类为单例)
- prototype(多例,将Action类交给IoC容器是需要设置为多例)
- request(在Web工程下,创建的类会被引入request域中)
- session(在Web工程下,创建的类会被引入到session域中)
5,Spring中属性注入
1,利用有参构造方法
2.set方法注入
set方法设置对象类型的注入:
2.1 p名称空间的属性注入(类中属性也需要提供set方法)
首先需要引入p名称空间
如何引入:
2.2.SpEL(Spring Exception Language)可以调用其他类中的属性和方法
例子:
3,集合类型的属性注入(一般在整合Spring和Hibernate)时用到
二,Spring分模块开发的配置
1,引入多个配置文件
2,在一个配置文件中引入多个配置文件
注意:将dao层的对象作为相应的service层中类中的属性,这样在创建一次spring工厂即可