为了方便以后开发中查阅和复习,整理了以下的一些常用注解
- 将 bean 添加到 spring 的管理
@Component(“bean的id”)@Service(“bean的id”)@Repository("bean"的id)-
@Named(“bean的id”)【@Component的替代方案】
- 定义配置类
-
@Configuration -
@Bean告诉 Spring 被修饰的方法会返回一个对象,该对象注册到ApplicationContext中; -
@Import(类名)导入配置类 -
@ImportResource("xml配置文件名"):导入xml配置文件 @PropertySource("classpath:properties文件路径") 导入资源文件-
@EnableWebMvc启用注解驱动的Spring MVC
-
- 扫描包
@ComponentScan (basePackages={"包名1","包名2"})@ComponentScan (basePackageClasses={a.class,b.class})
- 自动装配(修饰属性和 setter 方法)
-
@Autowired|@Inject| @Resource - 可以设置
@Autowired的required属性为false,spring 会尝试执行装配,如果没有发现匹配的 bean ,Spring 将会让这个 bean 处于未装配状态;(可能引发空指针异常)
-
@Conditional(实现了Condition接口的类)
重写该类的 matches 方法,返回 true 创建被修饰的 bean ,否则不创建;@Primary设置被修饰 bean 为首选bean,当有多个 bean 实现了同一个接口时,spring 在注入的时候可能会产生NoUniqueBeanDefinitionException的异常,此时设置该注解标记为首选bean-
@Qualifier(“指定需要注入的bean的id”) 与@Autowired 和 @Inject 协同使用; -
@Scope(value=bean的作用域,proxyMode=代理方式)-
proxyMode主要解决讲会话或请求作用域的 bean 注入到单例 bean 中所遇到的问题(详见spring实战p87页) -
ScopedProxyMode.TARGET_CLASS:使用CGLib代理; -
ScopedProxyMode.INTERFACES:使用接口代理
-
@Aspect:定义切面-
@Before:通知方法会在目标方法调用之前执行 -
@AfterReturning通知方法会在目标方法返回后调用 -
@AfterThrowing:通知方法会在目标方法抛出异常后调用 -
@Around通知方法会将目标方法封装起来,可以获取ProceedingJoinPoint对象 -
@After:通知方法会在目标方法返回或抛出异常后调用 -
@DeclareParents():为代理对象引入新方法 -
@Pointcut:可以在一个@AspectJ切面内定义一个可重用的切点- 表达式:
exection(*【返回值类型】 方法所属的类.方法名(..【使用任意参数】)) -
AspectJ指示器-
args(): 限制连接点匹配参数为指定类型的执行方法; -
@args():限制连接点匹配参数由指定注解标注的执行方法; -
execution():用于匹配是连接点的执行方法; -
this():限制连接点匹配AOP代理的bean引用为指定类型的类 -
target:限制连接点匹配目标对象为指定类型的类 -
@target():限制连接点匹配特定的执行对象,这些对象对应的类要具有指定类型的注解; -
within():限制连接点匹配指定的类型; -
@within():限制连接点匹配指定注解所标注的类型; -
@annotation:限制匹配带有指定注解的连接点;-
@Controller声明为一个控制器 -
@ResponseBody @RequestMapping@RestController@RequestParam@RequestBody@PathVariable@RequestHeader@CookieValue@SessionAttributes@ModelAttribute-
@ResponseStatus:将异常映射为特定的状态码 -
@ExceptionHandler:在方法上添加该注解,当抛出异常时,将会委托该方法来处理 -
@ControllerAdvice本身已经使用了@Component,会自动被组件扫描到,其最实用的场景就是将所有的@ExceptionHandler方法收集到一个类中,这样所有控制器的异常就能在一个地方进行一致处理
-
-
- 表达式: