spring总结
来源:互联网 发布:java服务器用linux 编辑:程序博客网 时间:2024/06/16 22:10
* 引用类型使用注解赋值:@Autowired
* 位置:
* 1.在属性定义的上面, 无需set方法
* 2.在set方法的上面。
* 使用byName方式给引用类型赋值,需要两个注解@Autowired ,@Qualifer
* @Autowired:给引用类型赋值
* @Qualifer:指定对象的名称,它有value="bean的id"
*
*/
//引用类型 byName
@Autowired
@Qualifier("mySchool")
private School myXueXiao;
*-*spring配置
IoC:控制反转, 反转控制
控制:控制java对象的创建,属性(依赖关系)的赋值
反转:在代码之外,使用容器创建对象。 容器可以 是spring框架实现。
正转:在代码中,使用new构造方法创建对象。
*2*
加入注解@Aspect ,表示当前类是切面类, 是用来给业务方法增加功能的。
前置通知:@Before
* 位置:在方法的上面
* 属性:value="切入点表达式"
*
* 特点:
* 1.在目标方法之前先执行的。执行的时间点
* 2.不会改变目标方法的执行结果。
* 3.不会影响目标方法的执行流程。
/**
* 切面类中的方法可以带有参数 : JoinPoint
* JoinPoint:表示切入点的信息,可以获取切入的方法名称, 方法的参数等。
* 注意:JoinPoint必须位于参数列表的第一个参数
*/
@Before("execution(* com.bjpowernode.ba01.SomeServiceImpl.doSome(..))")
public void myBefore(JoinPoint jp){
//JoinPoint 获取切入点的信息
System.out.println("切入点的签名:"+jp.getSignature());
//获取参数信息
Object args [] = jp.getArgs();
System.out.println("切入点的参数个数:"+args.length);
for(Object obj: args){
String str = (String)obj;
System.out.println("参数:"+str);
}
//记录日志的功能代码
System.out.println("前置通知:在目标方法之前,增强功能");
}
后置通知:@AfterReturning
* 位置:方法的上面
* 属性:
* 1. value:切入点表达式
* 2. returning:自定义的变量名,表示目标方法的执行结果。 和通知方法的形参名一样。
*
* 特点:
* 1.在目标方法之后执行的, 这是执行的时间点。
* 2.能获取到目标方法的执行结果。
* ①:如果目标方法返回时对象,可以修改对象的属性值。
* ②:如果目标方法返回的是非引用类型(包括String),是不能修改值。
* 3.不能改变目标方法的执行流程。
环绕通知:@Around
* 位置:方法的上面
* 属性:value 切入点表达式
*
* 特点:
* 1.在目标方法前和后都能增强功能
* 2.能够改变目标方法的执行结果。
* 3.控制目标方法的执行
* @throws Throwable
异常通知: @AfterThrowing
* 位置:在方法的上面
* 属性:
* 1. value 切入点表达式
* 2. throwing 自定义的变量名,表示目标方法抛出的异常对象名,和通知方法的参数名一样。
*
* 特点
* 1.在目标方法抛出异常的时候,会自动执行通知方法。
* 2.不是异常处理程序,异常还是被抛出的。
*
* try{
* doSecond();
* }catch(Exception e){
* myAfterThrowing(e);
* }
*/
@AfterThrowing(value="execution(* *..SomeServiceImpl.doSecond(..))",throwing="ex")
public void myAfterThrowing(Throwable ex){
//调用邮件发送程序, 短信发送程序。 把异常记录到数据库,记录到文件
System.out.println("异常通知:在目标方法抛出异常时,执行。 异常的信息是:"+ex.getMessage());
}
/**
* 最终通知:@After
* 位置:在方法的上面
* 属性:value 切入点表达式
*
* 特点:
* 1.在目标方法之后执行的。
* 2.不管目标方法是否有异常抛出,总是会执行的。
*/
@After(value="mypt()")
public void myAfter(){
System.out.println("最终通知:总是会被执行的");
}
/**
* 定义切入点:@Pointcut
* 位置:自定义方法的上面
* 属性:value 切入点表达式
* 特点:
* 管理切入的点定义,其他通知中value属性可以使用方法名作为切入点
*/
@Pointcut("execution(* *..SomeServiceImpl.doThird(..))")
private void mypt(){
//无需逻辑代码
}
- Spring总结
- Spring总结
- spring总结
- spring总结
- spring总结
- Spring总结
- spring 总结
- spring总结
- Spring总结
- Spring 总结
- spring总结
- spring 总结
- spring 总结
- spring总结
- Spring总结
- Spring总结
- Spring总结
- spring 总结
- jQuery基础总结(一)
- java循环语句
- 山东大学java程序设计实验报告6数组
- mybatis总结1
- Python 列表
- spring总结
- leetcode#287. Find the Duplicate Number
- viewport 缩放
- 记录一些我开发经常用的东西
- Ubuntu 16.04 LTS官方镜像
- 欢迎使用CSDN-markdown编辑器
- 建造者模式
- static 的作用
- Java -Tomcat 之 Mac下配置Intellij IDEA + Tomcat 权限问题