1. spring框架的特点
1.1. 将大型项目中多个基于Java的框架整合在一起,实现复杂的功能模块
1.2. 通过配置文件提供可插可拔的接口式的整合方案
1.3. IOC/DI 控制反转/依赖注入
1.4. AOP 面向切面编程
2. Spring的体系结构
最重要组成部分:data access,web,aop,core
3. IOC
3.1. 将对象的控制权由硬编码的程序转交给Spring容器
3.2. 让对象在被需要使用的情况下被创建,提高内存使用的效率
3.3. 传统Java程序通过new关键字进行创建对象,对象的控制权在Java程序
4. 代理模式
4.1. Spring框架设计思路基于代理模式:通过代理对象监听程序运行的过程,一旦发现需要使用某个对象,则根据配置文件的设置,动态创建这个对象,使用Java技术就是Java反射机制
4.2. 代理模式的设计结构
4.2.1. 抽象主题角色:将需要完成的业务设计为接口的方法(黄牛党和普通用户都需要购票,但各自实现的方式不同)
4.2.2. 真实主题角色:业务功能的真正执行者(用户需要买票),让用户类实现业务接口,提供用户买票的具体方案
4.2.3. 代理主题角色:接受真实主题角色的委托,代理完成业务(黄牛党替用户买票),代理类同样实现抽象主题角色的接口,将业务接口设置为自己属性,方便为不同类别用户提供同样的购票服务
4.2.4. 代理类在接口方法中直接调用真实主题角色的业务方法,并加入自己特殊的有任务操作
5. Spring基本语法
5.1. BeanFactory与ApplicationContext
5.1.1. BeanFactory与ApplicationContext都是通过XML配置文件加载bean,这也是Spring框架管理对象的核心思路
5.1.2. BeanFactory是Spring框架的顶级接口,ApplicationContext接口继承BeanFactory接口
5.1.3. BeanFactory支持bean延迟加载,ApplicationContext则在本身被初始化时,立即加载所有bean
ApplicationContext ctx=new
ClassPathXmlApplicationContext("applicationContext.xml");
BeanFactory bf=new XmlBeanFactory(new
ClassPathResource("applicationContext.xml"));
5.2. 通过spring容器创建的对象的作用域(生命周期)
<bean id="u" class="com.entity.User" scope="prototype" ></bean>
5.2.1. singleton: Spring只会创建该bean定义的唯一实例
5.2.2. prototype:每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例
5.3. Spring配置文件的细节
5.3.1. Spring可以加载多个配置文件,并且配置文件的名称可以自定义
ApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[] { "spring-common.xml", "spring-common2.xml" });
5.3.2.