目录
一、多种方式实现依赖注入
1、构造注入
//无参构造
public UserServiceImpl(){
}
//用于为dao赋值的构造方法
public UserServiceImpl(UserDao dao){
this.dao = dao;
}
2、使用p命名空间实现属性注入
语法:
示例:
3、注入不同数据类型
(1)注入直接量(基本数据类型、字符串)(略)
(2)引用其他组件(略)
(3)使用内部bean(略)
(4)注入集合类型
(5)注入null和空字符串值(略)
二、其他增强类型
1、异常抛出增强<aop:after-throwing>
public class ErrorLogger {
private static final Logger log = Logger.getLogger(ErrorLogger.class);
//代表异常抛出增强的方法
public void afterThrowing(JoinPoint joinPoint,RuntimeException e){
log.error(joinPoint.getSignature().getName() +"方法发生异常:" + e);
}
<!--与AOP相关的配置都放在<aop:config>标签里-->
<aop:config>
<!--定义一个切入点表达式,并命名为pointcut,用expression属性进行配置-->
<aop:pointcut id="pointcut" expression="execution(public void addNewUser(entity.User))"/>
<!--引用包含增强方法的Bean-->
<aop:aspect ref="theLogger">
<!--异常抛出增强-->
<aop:after-throwing method="afterThrowing"
pointcut-ref="pointcut" throwing="e" />
</aop:aspect>
</aop:config>
2、最终增强<aop:after>
类似于异常处理机制中的finally块的作用,一般用于释放资源。
public class AfterLogger {
private static final Logger log = Logger.getLogger(AfterLogger.class);
//代表最终增强的方法
public void afterLogger(JoinPoint joinPoint){
log.error(joinPoint.getSignature().getName() +"方法执行结束。");
}
<aop:after method="afterLogger" pointcut-ref="pointcut" />
3、环绕增强<aop:around>
环绕增强在目标方法的前后都可以织入增强处理,是功能最强大的增强处理,Spring把目标方法的控制权都交给了它。可以获取或修改目标方法的参数、返回值,可以对它们进行异常处理,甚至可以决定目标方法是否被执行。
示例代码:
配置文件中的关键代码:
三、使用注解实现IOC的配置
1、使用注解定义Bean
2、使用注解实现Bean组件装配
3、加载注解定义的Bean
4、使用Java标准注解完成装配
四、使用注解定义切面
1、AspectJ简介
2、使用注解标注切面
3、使用注解定义其他类型的增强(与前置后置相似,略)