6-基于XML与注解的AOP开发
XML方式实现AOP实现步骤
导入AOP相关坐标(Spring中AOP主要通过aspectj实现,所以要导入aspectjweaver)
创建目标接口和目标类(内部有切点)
创建切面类(内部实现增强方法)
将目标类和切面类的创建权交给Spring(将目标类和切面类放入Spring容器中)
在applicationContext配置文件中配置织入关系
测试代码
目标类与目标接口123456/** * 目标对象接口 */public interface TargetObject { public String save();}
123456789/** * 目标对象 */public class TargetObjectImpl implements TargetObject{ public String save() { System.out.println("save running..."); return "return value..."; } ...
5-AOP基础
AOP-面向切面编程AOP是Aspect Oriented Programing(面向切面编程)的缩写,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
AOP 是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
简言之,在OOP(面向对象编程)中,最大的特点就是继承,多态与封装,而在封装过程中我们需要把功能不同的方法封装到不同对象中,这就导致了我们在使用这些对象时重复度很高,例如有多个方法都需要在执行前调用日志控制方法,我们当前的解决办法只有在每个类中重写日志控制方法或者将日志控制方法写入新的控制类,在需要的类中调用该方法
第一种方法不仅耦合度高,而且不便于重写或修改,代码重复度也很高,第二种方法,虽然解决了代码重写修改的问题,但日志控制方法会与所有调用它的类耦合死,我们调用某一方法时必然会调用与之耦合的日志控制类
基于以上问题,便形成了与之对应的解决方案:面向切面编程AOP,一般 ...
4-注解开发与Junit集成
Spring注解开发Spring是轻代码而重配置的框架,一般情况下,配置比较繁重,影响开发效率,所以注解开发是一种必然趋势,注解代替XML配置文件可以简化配置,提高开发效率
Spring原始注解Spring的原始注解主要用于代替XML配置中的标签
注解
说明
@Component
使用在类上用于实例化Bean
@Controller
使用在web层类上用于实例化Bean
@Service
使用在service层类上用于实例化Bean
@Repository
使用在dao层类上用于实例化Bean
@Autowired
使用在字段上用于根据类型进行依赖注入
@Qualifier
结合@Autowired一起使用用于根据名称进行依赖注入
@Resource
相当于@Autowired+@Qualifier,按照名称进行注入
@Value
注入普通属性
@Scope
标注Bean的作用范围
@PostConstruct
使用在方法上标注该方法是Bean的初始化方法
@PreDestory
使用在方法上标注该方法时Bean的销毁方法
未使用 ...
3-相应API与配置数据源
Spring相应APIApplicationContext的实现类
ClassPathXmlApplicationContext:从类的根路径下加载配置文件(即resources文件夹中)一般情况下都使用这种
FileSystemXmlApplicationContext:从磁盘路径下加载配置文件,配置文件可以在磁盘任意位置
AnnotationConfigApplicationContext:当使用注解来配置容器对象时,需要使用这种方式来创建Spring容器,它用来读取注解
getBean()方法getBean方法可以接收两种参数,可以分别传入容器中的ID,或者是对象的类
12context.getBean("userService");context.getBean(UserService.class);
第一种方式的好处在于指向性更强,因为ID只允许出现一次,所以可以通过定义不同的ID指向相同的类,从而创建多个相同的类对象。但第二种方式如果Spring容器中有相同类对象就不能够正常识别要创建哪个对象
Spring配置数据源数据源(连接池)的作用
数据源(连接 ...
2-Spring配置文件与依赖注入
Spring配置文件Bean标签基本配置用于配置对象交由Spring来创建,默认情况下调用的是类中的无参构造函数,没有无参构造的情况下不能创建成功
基本属性
id:Bean实例在Spring中的唯一标识
class:Bean的全限定名称
Bean标签范围配置scope属性
取值范围
说明
singleton
默认值,单例的
prototype
多例的
request
web项目中,Spring创建一个对象并将对象存入request域内
session
web项目中,Spring创建一个对象并将对象存入session域内
global session
web项目中,应用在Portlet环境,如果没有Portlet环境,global session相当于session
这里单例是指每次创建出的Bean对象都是同一个对象,而多例则表示每次创建的都是全新的不同的Bean对象
示例
1234<!--单例的--><bean id="userDao" class="cn.ywrby.dao.impl.UserDaoImp ...
1-Spring基础
基本概念Spring是分层的Java SE/EE应用全栈(full-stack)轻量级开发框架,以IoC(Inverse of Control:反转控制)和AOP(Aspect Oriented Programing:面向切面编程)为内核
提供了展现层(Spring MVC)和持久层Spring JDBCTemplate以及业务层事务管理等众多企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开发框架
Spring优势
方便解耦,简化开发:通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
支持AOP编程:通过Spring的AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过AOP轻松实现。
声明式事务的支持:可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。
方便程序测试
方便集成各种优秀框架
降低了Java EE ...