Spring中注解

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){}

你可能感兴趣的:(Spring中注解)