Spring工作生活

Spring注解大全

2019-07-02  本文已影响48人  鸡毛飞上天吧

Spring注解归纳总结

分类

组件注解(声明bean的注解)
@Component 组件,没有明确的角色
@Controller 在展现层使用,控制器的声明
@Service 在业务逻辑层使用(service层)
@Repository 在数据访问层使用(dao层)

@Component(“xxx”)
指定某个类是容器的bean,@Component(value="xx")相当于<bean id="xx" />,其中value可以不写。用于标注类为容器bean的注解有四个,主要用于区别不同的组件类,提高代码的可读性
@Component,用于标注一个普通的类
@Controller 用于标注一个控制器类
@Service 用于标注业务逻辑类
@Repository 用于标注DAO数据访问类
现在这几个注解没有什么区别,尽量根据类的不同功能选择合适的注解。
注解用于修饰类,当不写value属性值时,默认值为类名首字母小写。



组件扫描注解
@ComponentScan 用于对Component进行扫描,相当于xml中的context:component-scan/(类上)


自动装配(注入bean的注解)
@Resource 由JSR-250提供
@Autowired 组件,没有明确的角色
@Inject 由JSR-330提供


bean相关注解(Bean的属性支持)
@Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)
@Scope 设置Spring容器如何新建Bean实例(方法上,得有@Bean)
@DependsOn 该注解也是配合@Component这类注解使用,用于强制初始化其他bean
@Lazy
@PostConstruct (singleton作用域)的生命周期的行为注解
@PreDestroy (singleton作用域)的生命周期的行为注解


该注解是AspectJ中的注解,并不是spring提供的,所以还需要导入aspectjweaver.jar,aspectjrt.jar,除此之外还需要依赖aopalliance.jar

AOP 相关注解
@Aspect 修饰Java类,指定该类为切面类。当spring容器检测到某个bean被@Aspect修饰时,spring容器不会对该bean做增强处理(bean后处理器增强,代理增强)
@Before 修饰方法,before增强处理。有一个value属性用于指定切入点表达式。用于对目标方法(切入点表达式指定方法)执行前做增强处理。可以用于权限检查,登陆检查
@AfterReturning 修饰方法,afterreturning增强处理。目标方法正常结束后做增强处理常用属性 1、{pointcut/value:定义切入点} 2、{returning:指定一个参数名,用于接受目标方法正常结束时返回的值。在增强方法中定义同名的参数。}
@AfterThrowing 修饰方法,afterthrowing增强处理。当目标程序方法抛出 异常或者异常无法捕获时,做增强处理。常用属性:1、{pointcut/value :指定切入点表达式}2、{throwing:指定一个形参,在增强方法中定义同名形参,用于访问目标方法抛出的异常}
@After 修饰方法 ,after增强处理。无论方法是否正常结束,都会调用该增强处理(@After= @AfterReturning+@AfterThrowing)。一般用于释放资源。有一个value属性,用于指定切入点表达式。
@Around 修饰方法, around增强处理。该处理可以目标方法执行之前和执行之后织入增强处理,可以看作时@Before和@AfterReturning的总和。有一个value属性,指定切入点表达式。Around增强处理通常需要在线程安全的环境下使用,如果@Before和@AfterReturning可以处理就没必要使用@After Returning。当定义一个Aound增前处理时,增强方法第一形参需要时ProceedingJoinPoint类型。ProceedingJoin Point有一个Object proceed()方法,用于执行目标方法,返回对象当然也可以为目标方法传递数组参数。
@Pointcut 声明切点在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)
@Order 当不同的切面中的两个增强处理需要在同一个连接点被织入时,spring aop可以指定不同切面类的增强处理优先级。有一个value属性,指定一个int值,属性值越小优先级越高。


Java配置类相关注解
@Configuration 修饰一个Java类,被修饰的类相当于一个xml文件,相当于< beans> </ beans>在springboot中大量使用了该注解,该注解提供了一种使用Java类方式配置bean。
@Import @Import({xxx.class})修饰Java类,用于向当前配置类导入其他java配置类
@ImportResource @ImportResource(”classpath: /aa.xml“)修饰Java类,用于向当前注解类导入xml配置文件
@Value @Value("${expression}")修饰成员变量或者 方法构造器的参数,常用于注入属性文件中的值。注意:@Value不能对 static 属性注入。
@ConfigurationProperties 用于从属性文件中注入值 ,修饰类
@PropertySource 用于加载配置文件


环境切换
@Profile 通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境。(类或方法上)
@Conditional Spring4中可以使用此注解定义条件话的bean,通过实现Condition接口,并重写matches方法,从而决定该bean是否被实例化。(方法上)


异步相关
@EnableAsync 配置类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口(类上)
@Async 在实际执行的bean方法使用该注解来申明其是一个异步任务(方法上或类上所有的方法都将异步,需要@EnableAsync开启异步任务)


定时任务相关
@EnableScheduling 在配置类上使用,开启计划任务的支持(类上)
@Scheduled 来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)


这些注解主要用来开启对xxx的支持。

Enable注解说明
@EnableAspectJAutoProxy 开启对AspectJ自动代理的支持
@EnableAsync 开启异步方法的支持
@EnableScheduling 开启计划任务的支持
@EnableWebMvc 开启Web MVC的配置支持
@EnableConfigurationProperties 开启对@ConfigurationProperties注解配置Bean的支持
@EnableJpaRepositories 开启对SpringData JPA Repository的支持
@EnableTransactionManagement 开启注解式事务的支持
@EnableCaching 开启注解式的缓存支持


测试相关注解
@RunWith 运行器,Spring中通常用于对JUnit的支持 @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration 用来加载配置ApplicationContext,其中classes属性用来加载配置类 @ContextConfiguration(classes={TestConfig.class})


SpringMVC部分
@EnableWebMvc 在配置类中开启Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若无此句,重写WebMvcConfigurerAdapter方法(用于对SpringMVC的配置)。
@Controller 声明该类为SpringMVC中的Controller
@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)
@ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)
@RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)
@PathVariable 用于接收路径参数,比如@RequestMapping("/hello/{name}")申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。
@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。
@ControllerAdvice 通过该注解,我们可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,
这对所有注解了 @RequestMapping的控制器内的方法有效。
@ExceptionHandler 用于全局处理控制器里的异常
@InitBinder 用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。
@ModelAttribute 本来的作用是绑定键值对到Model里,在@ControllerAdvice中是让全局的@RequestMapping都能获得在此处设置的键值对。
@CrossOrigin 用于解决跨域问题,只需在接口上进行声明即可,替代过虑器或拦截方式。

版权声明:文章内容总结于网络,如侵犯到原作者权益,请与我联系删除或授权事宜

上一篇下一篇

猜你喜欢

热点阅读