第一个spring项目
创建spring项目
导入jar包
commons-logging-1.2.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-core-4.1.6.RELEASE.jar
spring-expression-4.1.6.RELEASE.jar
加入xml的验证信息
创建 ApplicationContext 容器
Ioc接口注入:
@Service:标记业务层bean
@Controller:标记控制层,比如:struts中的Action
@Repository:标记数据访问组件,即DAO类
@Component:当组件不好归类时使用该标记
Aop面向切面编程:
AOP侧重于方面对象,方面(共同处理组件)关注的是共通处理部分,例如事务管理,权限控制,日志记录等。可以通过配置将其作用到某一个或多个目标对象上。好处是实现组件重复利用,改善程序结构,提高灵活性。将共同处理组件与目标对象解耦。AOP主要是解决一对多调用问题,一个共通组件被多个目标组件调用,降低组件关联。
连接点,切入点,通知,切面,目标对象,织入。
通知的类型:
前置通知(Before advice)
在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。
返回后通知(After returning advice)
在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。
抛出异常后通知(After throwing advice)
在方法抛出异常退出时执行的通知。
后通知(After (finally)advice)
当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。
环绕通知(Around Advice)
包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类型。环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。
配置的時候要在<beans 里面配置aop和相应的路径></beans>
spring采用了动态代理技术实现了AOP控制。
如果Spring采用了AOP配置后,容器getBean方法返回的组件对象是代理对象(一个动态生成类型,即动态代理类),用户在使用时,由代理对象调用切面组件和目标对象的功能。
Spring采用的动态代理技术有以下两种:
a.目标对象没有接口(使用cglib.jar工具包)适用于目标组件没有接口实现的情况。
原目标组件类型{
写目标对象的方法,在重写的方法中调用目标对象和方面组 件对象功能
}
b.目标对象有接口(采用JDK Proxy API)适用于目标组件有接口实现的情况。