Spring同Struts和Hibernate一样,也是一个轻量级框架。他使现在有的技术更加易用,来推进编码最佳
实践。他的主要内容有:依赖注入容器,AOP(声明式事务),DAO/ORM,WEB集成等技术。
一:DI-->依赖注入
旨在解决复杂的软件系统。他引入了组件化的思想来解偶合。强制将组件的构件和使用分开,而明确定
义各个组件之间的接口。并在运行时注入。
那么如何在程序中使用DI呢?下面以坐车回家为例子来说明DI。
[接口和实现类有了。定义接口在spring中是必须的,因为程序运行前并不知道最终的实现类是哪个。罗
嗦一句,如果知道了直接new就可以了也就不需要注入了]
<bean id="bus" class="com.xxx.xxx.xxximpl"></bean>
上面的意思是创建一个class所指向的对应类的实例,id为这个bean的代号。也可以使用name。只是name
可以使用特殊字符而id不可以。id后面要使用到。要完成这个例子还需要在创建一个taxi出租车的bean。
再创建一个bean:
<bean id="run" class="com.xxx.xxx.xxx">
</bean>
这个bean意思为:class指向了一个类,并创建这个类的一个实例。这个类也就是这个例子中要运行的类,他定义了回家接口对象。而property节点就是为这个接口对象注入相应的子类实例使用的。节点中name值对应该类中接口对象名,ref为把某个受管理的bean(一定要实现这个接口)注入给这个接口对象。
二:AOP-->面向方面(切面)编程(完成声明式事务)
的角色的对象引用。
AOP是指面向切面编程,那么什么是切面呢?举个例子:比如去超市买东西,进门的时候算是一个面买完
东西付款的时候又是一个面。等等。切面也是自己抽象出来的。
那在代码中如何使用AOP呢
1:编写业务逻辑接口和实现类(被代理类的接口和实现类)
2:编写方面代码,(前置的通知或切面应实现 MethodBeforeAdvice接口)由spring提供
spring中的切面分为前置 后置 环绕 和异常等四类
3:组装(注入)
在spring配置文件中:
创建第一个bean 指向被代理类(里面包含逻辑代码)
<bean id="buytarget" class="com.xxx.xxx.xximpl"></bean>
创建第二个bean 通知切面类(在被代理类执行前执行(前置的)),他实现了MethodBeforeAdvice接口。
<bean id="befor" class="com.xxx.xxx.BeforeAdvice"></bean>
创建第三个bean 代理类:最终通过代理类访问业务逻辑
他的class是指向又spring提供的一个类:org.springframework.aop.framework.ProxyFactoryBean
他需要三个参数
1:target
2:interceptorNames 他是一个列表他包含了所有需要在beanTarget上执行的方面。注意,advisor列表
的次序是非常重要的。
3:proxyInterfaces 代理接口,也就是spring的代理类要实现的接口,通常和被代理的接口一样。