day1
Spring
IOC 和 AOP 为内核
IOC inverse of control 控制反转
AOP aspect oriented programing 面向切面编程
展现层 WEB
SpringMVC
持久层 DAO
Spring JDBCTemplate
业务层 SERIVICE
事务管理
Spring发展
- Rod Johns Spring之父
- 学习Spring5.0.5
Spring优势
- 方便解耦,简便开发
- 对象创建权给Spring完成 对象放在容器中
- AOP 编程支持
- 面向切面编程
- 声明式事务控制
- 配置的方法
- 方便程序的测试
- 继承众多优秀框架
- 降低JavaEE的使用难度
- Spring对JavaEEAPI进行了封装层 模板Template
- Java源码是经典的学习典范
Spring体系结构
CoreContainer
Beans 容器产生对象
Core 核心
Context 行下文
SpEL SpringExpressionLanguage Spring表达式语言
AOP切面
dataAccess
Web
Spring程序开发步骤
- 导入Spring基本包
- 编写Dao接口及其实现
- 创建Spring核心配置文件
- 在Spring配置接口
IOC
- 编写需要放入容器中的类
- 创建XML配置文件,文件名习惯为applicationContext.xml
- 利用Bean标签将需要的对象放入bean容器中,id随便取,class为需要装入容器中的类的全包名,spring内部会通过classname.class.getContructor().newInstance()创建实例对象,无参构造创建
<bean id=\"UserDao\" class=\"cn.gyk.dao.Impl.UserDaoImpl\"/>
id 是唯一性表示,不允许重复
class 全限定名
Bean标签的范围设置 scope属性
- singleton 单一的唯一的,用的是设计模式里面的单例模式,容器之中对象唯一
- prototype 多例的 ,每次getbean都会创建一个新的对象
- request
- session
- global session
以上三种会把对象放到容器的同时也会把对象放到相应的request、sessioni、全局session域中方便获取,配置需要在web环境下
单元测试
- Junit单元测试
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
Bean的创建时机
- 从容器中获取的对象是使用无参构造函数,在无参构造函数中打印一句话方便查看对象的创建时机
- scope 设置为 singleton 时 当加载配置文件创建spring容器的时候设置为singleton的对象就创建 因为是单例模式,所以在初始化容器的时候就创建所有的单例对象,这个对象有切仅有一个
- 创建时机:当配置文件被加载时,对象就被创建了
- 对象运行:只要容器在,对象就一直在内存中
- 对象销毁:当应用卸载,销毁容器时,对象就被销毁了
- scope 设置为 prototype bean的创建时机是在getBean时才创建
- 创建实际: 当使用对象时(getBean),创建新的对象实例
- 对象运行:只要在使用对象就一直存在
- 对象销毁:对象长时间不适用,被Java垃圾回收机制回收
Bean生命周期配置
- init-method 指定类的初始化方法
- destory-method 指定类的销毁方法
//在对象的类中添加两个方法,名字随便
public void init(){
System.out.println(\"initialized...\");
}
public void destroy(){
System.out.println(\"destroy...\");
}
<!-- 通过在xml配置文件中配置方法 -->
<bean id=\"UserDao\" class=\"cn.gyk.dao.Impl.UserDaoImpl\"scope=\"prototype\" init-method=\"init\" destroy-method=\"destroy\"/>
Bean实例化的三种方式
- 无参构造方法实例化
- 工厂静态方法实例化
//创建对象那个的工厂方法
public class StaticFactory {
public static UserDao getUserDao(){
return new UserDaoImpl();
}
<!-- xml 文件配置更改-->
<bean id=\"UserDao\" class=\"cn.gyk.factory.StaticFactory\" factory-method=\"getUserDao\" scope=\"singleton\" />
-
通过factory-method属性指定生成对象的工厂方法
-
工厂实例方法实例化
-
这种方法需要现有工厂对象才能调用方法
-
- 先把工厂对象放到Spring容器中,Spring通过无参构造创建工厂对象
-
<bean id=\"DynamicFactory\" class=\"cn.gyk.factory.DynamicFactory\" scope=\"singleton\"/>
-
- 再配置获取UserDao的Bean
-
<bean id=\"UserDao\" factory-bean=\"DynamicFactory\" factory- +method=\"getUserDao\"/>
factory-bean是指定再Spring容器中的工厂方法,factory-method是指定工厂方法中创建对象的方法
来源:https://www.cnblogs.com/poteitoutou/p/16267433.html
本站部分图文来源于网络,如有侵权请联系删除。