spring学习笔记
1.spring的概述
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用;
Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。Spring以一种非侵入式的方式来管理你的代码,Spring提倡”最少侵入”,这也就意味着你可以适当的时候安装或卸载Spring。
Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。
2.spring的核心
IOC【Inverse Of Control】控制反转:所谓控制反转就是把对象(bean)对象和维护对象(bean)之间的关系的权利转移到Sqring容器中去了(ApplicationContext.xml)而程序本身不在维护了
DI【Dependency Injection】依赖注入:实际上DI和IOC是同一个概念,因为在ApplicationContext.xml配置文件中bean和bean之间通过ref来维护的时候是相互依赖的,所以又叫做依赖注入。也就是控制反转。
AOP:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
可以用于:日志记录,性能统计,安全控制,事务处理,异常处理等等
Spring使用AOP的功能完成各种共用的模板功能,使得我们的业务代码与其它代码分开
3.spring 获取对象
基本Bean配置
id属性:标识配置的bean,唯一且不能有特殊符号【Spring3.2前】
name属性:和id功能相同,但可以使用特殊符号,Spring3.2后不区分id,name
class属性:配置bean的完全限定名
配置一个基本的Bean对象:
<bean id="user" class="cn.itdemo.test.User"></bean>
工厂方式获取对象
factory-bean属性:用于工厂模式创建对象的形式,使用定义的工厂类的id
factory-method属性:工厂类中用于创建对象的方法
静态工厂方式:【静态方法】
public class BeanFactory {
public static User getUser(){
return new User();
}
}
配置信息
<bean id="user2" class="cn.itdemo.test.BeanFactory" factory-method="getUser"></bean>
实例工厂方式:【实例方法】
public class BeanFactory2 {
public User getUser(){
return new User();
}
}
配置信息
<bean id="factory" class="cn.itdemo.test.BeanFactory2"></bean>
<bean id="user3" factory-bean="factory" factory-method="getUser"></bean>
@RunWith(SpringJUnit4ClassRunner.class)
使用何种Junit环境进行Spring测试,当前使用SpringJunit4ClassRunner的字节码对象
@ContextConfiguration("bean.xml")
加载Spring的配置文件,分以下写法
@ContextConfiguration("bean.xml") 默认加载当前包下的bean.xml文件
@ContextConfiguration("classpath:bean.xml") 加载当前src下的bean.xml文件
@ContextConfiguration("/bean.xml") 加载当前src下的bean.xml文件
@ContextConfiguration 加载当前测试类下的配置文件,文件命名必须是【类名-Context.xml】
@Autowired
将Spring里的对象注入到指定的位置