什么是spring
开源一站式框架:具有javaee开发的每一层解决方案。优点:方便解耦,面向切片(AOP),方便集成别的框架。
- web层:springMVC
- service层:spring的Bean管理,spring声明事物
- DAO层:spring的JDBC模板,spring的ORM模板
解压spring压缩包
- docs :Spring的开发规范和API
- libs :Spring的开发的jar和源码
- schema :Spring的配置文件的约束
解压完成后使用spring只需导入核心的几个jar包
什么是IOC
控制反转(Inversion of control) 将对象的创建权限交给spring。
底层实现方案:工厂+配置文件+反射
DI依赖注入
依赖注入的前提是必须有ioc环境,spring管理这个类时将这个类依赖的属性注入当前创建的对象中来。
spring的工厂类
BeanFactory:调用getBean时才会生成类实例。(淘汰)
ApplicationContext:加载配置文件时就将spring管理的类实例化
- ApplicationContext有两个实现类:
- ClassPathXmlApplicationContext:加载类路径下的xml配置文件。
- FilePathXmlApplicationContext:加载文件系统下的xml配置文件。
bean的相关配置
标签的id和name的配置
id :使用了约束中的唯一约束。里面不能出现特殊字符的。
name :没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。
Bean的生命周期的配置(了解)
init-method:Bean被初始化的时候执行的方法
destroy-method:Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)
Bean的作用范围的配置(重点)
scope:Bean的作用范围
- singleton :默认的,Spring会采用单例模式创建这个对象。
- prototype :多例模式。(Struts2和Spring整合一定会用到)
- request :应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中。
- session :应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中。
spring创建管理类的几种方法
- 无参构造方法的方式(默认的)
- 静态工厂实例化
<bean id="bean1" class="com.demo..BeanFactory" factory-method="creatBean" />
- 实例工厂实例化
spring属性的注入
- 构造方法的注入
- set方法的注入
- p名称空间注入
- SpEl的属性注入