标签:bsp cti 语法 mbr repo interface 属性 注解注入 ref
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
Spring根据功能的不同,将代码划分为两类:主业务逻辑与系统级服务(交叉业务逻辑)。主业务逻辑间,及主业务逻辑与系统级服务间的耦合度是较高的。Spring对于前述两种较高的耦合度,采用了两种不同的技术进行解耦。使用IoC解耦主业务逻辑间的耦合度,使用AOP解耦主业务逻辑与系统级服务间的耦合度。
IoC,Inversion of Control,控制反转。将传统上由程序代码直接操控的对象创建权交给容器,通过容器来管理对象的生命周期。控制反转是对对象控制权的转移,从代码本身转移到了容器。
IoC是一种思想,是一个概念,其实现方式有很多。当前比较流行的实现方式有两种:依赖注入与依赖查找。
l 依赖查找:DL,Dependency Lookup,代码中需要给出目标对象的存放路径,系统会根据路径到容器中查找相应的对象。典型的应用是JNDI(Java Naming and Directory Interface,Java命名与目录接口,这是一个第三方容器,是一个服务器)。
l 依赖注入:DI,Dependency Injection,代码中无需给出目标对象的定位路径,只需给定对象名称或类型,系统就会直接到容器中进行查找。是目前最优秀的解耦方式。典型应用是Spring。
与该注解功能相同,意义不同的注解还有三个:
l @Repository:注解在Dao实现类上
l @Service:注解在Service实现类上
l @Controller:注解在SpringMVC的处理器类
这四个注解都表示,将当前类的对象交给Spring容器来管理。
其在注入值时即没有使用设值注入,也没有使用构造注入,而就是注解注入。即,与set方法、带参构造器没有任何关系。
l @Autowired
l @Qualifier
l @Reource
XML的优选级要高于注解的。
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
AOP底层采用两种动态代理模式实现:JDK的动态代理,与CGLIB动态代理。
交叉业务逻辑,例如事务、安全、日志等,称为切面。
业务类的对象,称为目标对象。
将切面插入到目标对象的目标方法的过程,称为织入。
目标对象中可以被切面织入的方法。
目标对象中真正被切面织入的方法。切入点一定是连接点,但连接点不一定是切入点。被标记为final的方法是不能作用连接点与切入点的。
通知是切面的一种,可以完成简单的织入功能。通知可以定义切面织入的时间点,切入点定义了切面织入的位置。
顾问是切面的一种,能够将通知以更为复杂的方式织入到目标对象中,是将通知包装为更复杂的切面的装配器。
AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
常用通知有五种:
l 前置通知
l 后置通知
l 环绕通知
l 异常通知
l 最终通知
通过切入点表达式可以过滤和选择切入点。
execution(
访问权限类型
返回值类型
全限定性类名
方法名(参数列表)
抛出的异常类型
)
表达式:execution(public * *..*.*(..))
意义:指定任意公共方法均为切入点。
表达式:execution(* com.abc.service.*.*(..))
意义:指定com.abc.service包中的何意类的任意方法均为切入点。
表达式:execution(**..service.*.*(..))
意义:指定service包(该包前可以有多级父包)中的何意类的任意方法均为切入点。
l com.abc.service 是匹配的
l com.service 是匹配的
l service 是匹配的
表达式:execution(**.service.*.*(..))
意义:指定service包(该包前只能有一级父包)中的何意类的任意方法均为切入点。
l com.abc.service 是不匹配的
l com.service 是匹配的
l service 是不匹配的
表达式:execution(**..*.doSome(..))
意义:指定何意类的doSome()方法均为切入点。
这是典型的IoC的应用。
这是典型的AOP的应用。
l DataSourceTransactionManager:使用JDBC、MyBatis、iBatis等进行持久化时使用。
l HibernateTransactionManager:使用Hibernate进行持久化时使用。
Spring事务默认的回滚方式是:发生运行时异常回滚,发生受查异常提交。
MySQL默认的事务隔离级别是可重复读;Oracle默认的事务隔离级别是读已提交。
事务传播行为是指,处于不同事务中的方法在相互调用时,执行期间事务的维护情况。
标签:bsp cti 语法 mbr repo interface 属性 注解注入 ref
原文地址:https://www.cnblogs.com/959xky/p/12222745.html