Spring(一)简介与IOC
简介
是什么
分布的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse of control反转控制)和AOP(Aspect oriented programming面向切片编程)为内核。
优势
(1) 方便解耦,简化开发
(2)AOP编程的支持
(3)声明式事务的支持
(4)方便程序的测试
(5)方便集成各种优秀框架
(6)降低Java EE中API的使用难度
体系结构
快速入门
Spring程序开发步骤
(1)导入Spring开发的基本包坐标
(2)编写Dao接口和实现类
(3)创建Spring核心配置文件
(4)在Spring配置文件中配置UserDaoImpl
(5)使用Spring中的API获得Bean实例
Spring配置文件
Bean标签基本配置
用于配置对象交由Spring来创建
默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。
基本属性:
(1)id:Bean实例在Spring容器中的唯一标识
(2)class:Bean的全限定名称
Bean标签范围配置
scope:对象的作用范围,取值如下:
当范围取值不同时,对象创建的时机也不同
- 当scope的取值为singleton时(加载配置文件时创建)
- Bean的实例化个数:1个
- Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例Bean的生命周期:
- 对象创建:当应用加载,创建容器时,对象就被创建了对象运行:只要容器在,对象一直活着
- 对象销毁:当应用卸载。销毁容器时,对象就被销毁了
- 当scope的取值为prototype时(使用对象时创建,getBean时)
- Bean的实例化个数:多个
- Bean的实例化时机:当调用getBean)方法时实例化Bean
- 对象创建:当使用对象时,创建新的对象实例对象运行:只要对象在使用中,就一直活着
- 对象销毁:当对象长时间不用时,被Java的垃圾回收器回收了
Bean生命周期配置
Init-method:指定类中的初始化方法名称
Destroy-method:指定类中销毁方法名称
Bean实例化三种方式
(1)无参构造方法实例化
(2)工厂静态方法实例化
(3)工厂实例方法实例化(非static方法不能,不使用对象直接调用,需要先创建工厂对象,再通过对象调用getXXXDao方法获取最终对象)
Bean的依赖注入分析
(1)依赖注入是什么
依赖注入(Dependency Injection):是Spring框架核心IOC的具体实现。
在编写程序时,通过控制反转,把对象的创建交给了Spring,,但是代码中不可能出现没有依赖的情况。IOC解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用Spring之后,就让Spring来维护了。简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。
(2)Bean的依赖注入方式
怎么将UserDao注入到UserService内部呢?
构造方法
有参构造
set方法
①简化方法
②在需要注入的Bean中增加新标签
(3)Bean依赖注入的数据类型
上面的操作,都是注入的引用Bean,处了对象的引阿以注入,普通数据类型,集合等都可以在容器中进行注入。
注入数据的三种数据类型:
- 普通数据类型
- 引用数据类型
- 集合数据类型
(4)引入其他配置文件(分模块开发)
小结
Spring相应api
ApplicationContext的实现类
(1)ClassPathXmlApplicationContext
根据从类的根路径下加载配置文件,推荐使用这种
- FileSystemXmlApplicationContext
它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
- AnnotationConfigApplicationContext
当使用注解配置容器对象时,需要使用此类来创建spring容器。它用来读取注解。
getBean()方法使用
根据id创建可以创建多个相同类型对象。
只存在一个可以使用通过类型创建。
Spring配置数据源
数据源(连接池)的作用
- 提高程序性能
- 事先实例化数据源,初始化部分连接资源
- 使用连接资源时从数据源中获取
- 使用完毕后将连接资源归还给数据源
- 常见数据源(连接池):DBCP、C3PO、BoneCP、Druid等
抽取jdbc配置文件
Spring注解开发
Spring原始注解
注意:
使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。
Spring新注解
Spring整合Junit
Spring集成Junit步骤