Spring中注解
@Test 可以不用写主方法就可以运行某一段代码块
@Test
public void demo(){
System.out.println("nihao");
}
@Component 用于声明dao的实现类、实体类、通知
@Component
public class User{}
//------
@Component
public class UserDaoImpl{}
//-------
@Component
@Aspect
public class TestAround{}
@Aspect 用于动态代理对象
@Component
@Aspect
public class TestAround{}
@Value 给实体类 属性设置初始值
public class User{
@Value("1")
private int id;
}
@Service 声明这个文件是一个业务逻辑处理文件
@Service
public class UserServiceImpl{}
@Autowire 通过ByType方式向Spring要对象 applicationContext中的bean的class属性值
@Service
public class UserServiceImpl{
@Autowire
private UserDaoImpl udi;
}
@Resource 通过ByName方式向Spring要对象 applicationContext中的bean的id属性值
@Service
public class UserServiceImpl{
@Resource
private UserDaoImpl udi;
}
@Controller 声明这个类是一个控制器
@Controller
public class UserController{}
@Before("扫描目标函数或者类") 通过aop动态代理将当前方法设置为切面的前置通知
@Before("execution(* com..*.*(*))")
public void doBefore(JoinPoint jp){}
@AfterReturning(value="扫描目标函数或者类",returning="返回值") 通过aop动态代理,将当前方法设置为切面的后置通知
返回值要和方法中的参数对象名一致
@AfterReturning(value = "execution(* com..*.*(*))",returning = "obj")
public void doAfter(Object obj){}
@AfterThrowing(value="扫描目标函数或者类",throwing="异常对象") 通过aop动态代理,将当前方法设置为切面的异常通知
异常对象要和参数中的异常对象名一致 如果目标函数不产生异常 异常通知不会执行
@AfterThrowing(value = "execution(* com..*.*(*))",throwing = "e")
public void doException(Throwable e){}
@After("扫描目标函数或者类") 通过aop动态代理,将当前方法设置为最终通知
@After("execution(* com..*.*(*))")
public void doFinal(){}
@Around("扫描目标函数或者类") 通过aop动态代理,将当前方法设置为环绕通知
如果想使用环绕通知,需要将其他四个通知失去作用
方法参数继承于JoinPoint 多了一个proceed方法
这个方法会产生一个异常,并调用目标方法执行 返回一个Object对象 对象中存储的是目标方法的返回值
@Around("execution(* com..*.*(*))")
public void doAround(ProceedingJoinPoint pjp){}