当前位置: 首页 > 科技观察

Java开发者必须掌握的20个常用Spring注解

时间:2023-03-12 10:48:48 科技观察

注解本身没有作用,就像xml一样。注解和xml都是一种元数据。元数据是解释数据的数据。这就是所谓的配置。本文主要列举了Spring|SpringMVC相关注解的介绍。Springpart1.声明bean注解@Component组件,作用不明确@Service用在业务逻辑层(service层)@Repository用在数据访问层(dao层)@Controller用在表现层,controller的声明(C)2.注入bean的注解@Autowired:Spring提供@Inject:JSR-330提供@Resource:JSR-250提供可以在set方法和属性上进行注解,推荐注解关于属性(一目了然,少写代码)。3、java配置类相关的注解@Configuration声明当前类是一个配置类,相当于Spring配置(在类上)xml形式的@Bean注解在方法上,声明当前方法的返回值是bean,替换xml中的方式(方法上)@Configuration声明当前类为配置类,其中内部结合了@Component注解,表示这个类是一个bean(类上)@ComponentScan是用于扫描Component,相当于xml上的@WishlyConfiguration(类上)@Configuration和@ComponentScan组合的注解可以替代这两个注解4.Aspect(AOP)相关注解Spring支持AspectJ的注解式切面编程。@Aspect声明一个切面(在一个类上),使用@After、@Before、@Around定义通知(advice),可以直接使用拦截规则(切点)作为参数。@After在方法执行后执行(在方法上)@Before在方法执行前执行(在方法上)@Around在方法执行前后执行(在方法上)@PointCut声明切点并在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)5.@Bean的属性支持@Scope如何设置Spring容器新建Bean实例(方法上,必须有成为@Bean)。设置类型包括:Singleton(单例,在一个Spring容器中只有一个bean实例,默认模式),Protetype(每次调用创建一个bean),Request(在web项目中,为每个http请求创建一个bean),Session(在web项目中,为每个httpsession创建一个bean),GlobalSession(为每个全局httpsession创建一个新的Bean实例)@StepScope还涉及到SpringBatch中的@PostConstruct,由JSR-250提供,在构造器被执行后执行executed,相当于xml配置文件中bean的initMethod@PreDestory由JSR-250提供,在bean销毁前执行。相当于xml配置文件中bean的destroyMethod6,@Value注解@Value为属性(attributes)注入值,支持注入方式有以下几种:“注入普通字符”注入操作系统属性《注入表达式结果》注入其他bean属性《注入文件资源》注入网站资源》注入配置文件注入配置使用方法:①编写配置文件(test.properties)book.name=《三体》②@PropertySource加载配置文件(类上)③还需要配置一个PropertySourcesPlaceholderConfigurer的bean7.环境切换@Profile通过设置Environment的ActiveProfiles来设置当前上下文需要使用的配置环境。(类或方法上)@ConditionalSpring4可以使用这个注解定义一个conditionalbean,通过实现Condition接口,重写matches方法,是d确定bean是否被实例化。(方法上)8.异步相关的@EnableAsync配置类中,通过该注解开启对异步任务的支持,叙述AsyncConfigurer接口(类上)@Async使用该注解声明为异步任务实际执行的bean方法(方法或类上的所有方法都会是异步的,需要@EnableAsync才能启动异步任务)9.定时任务相关@EnableScheduling在配置类上使用@EnableScheduling开启定时任务的支持(在类上)@Scheduled声明这是一个任务,包括cron、fixDelay、fixRate等类型(方法方面,需要先开启对定时任务的支持)10.@Enable*注解表示这些注解是主要用来开启对xxx的支持。@EnableAspectJAutoProxy启用对AspectJ自动代理的支持@EnableAsync启用对异步方法的支持@EnableScheduling启用对计划任务的支持@EnableWebMvc启用对WebMVC的配置支持@EnableConfigurationProperties启用对@ConfigurationProperties注解配置bean的支持@EnableJpaRepositories启用对SpringDataJPARepositories的支持@EnableTransactionManagement开启对注解式事务的支持@EnableTransactionManagement开启注解式事务的支持@EnableCaching开启注解式缓存支持11、测试相关的注解@RunWithRunner,通常用于Spring支持JUnit@ContextConfiguration用于加载配置ApplicationContext,其中classes属性用于加载配置类的SpringMVC部分@EnableWebMvc在配置类中启用WebMVC配置支持,比如一些ViewResolver或者MessageConverter,等如果没有这句话,重写WebMvcConfigurerAdapter方法(用于SpringMVC配置)。@Controller在SpringMVC中声明这个类为Controller@RequestMapping用于映射web请求,包括访问路径和参数(在类或方法上)@ResponseBody支持在response中放置返回值而不是页面,通常用户返回json数据(在返回值旁边或方法上)@RequestBody允许请求的参数在请求体中,而不是直接连接到地址。(放在参数前)@PathVariable用于接收路径参数,比如@RequestMapping("/hello/{name}")声明的路径,在参数前放置注解即可获取值,通常作为Restful接口实现。@RestController这个注解是一个组合注解,相当于@Controller和@ResponseBody的组合。注解在类上,也就是说Controller的所有方法都默认加上了@ResponseBody。@ControllerAdvice通过这个注解,我们可以把controller的全局配置放在同一个地方,用@Controller注解的类的方法可以注解到有@ExceptionHandler、@InitBinder、@ModelAttribute的方法上,这对于所有注解了@RequestMapping的controller里面的方法都起作用了。@ExceptionHandler用于全局处理控制器中的异常。@InitBinder用于设置WebDataBinder。WebDataBinder用于自动绑定前端请求参数到Model。@ModelAttribute的原始功能是将键值对绑定到Model。在@ControllerAdvice中,全局的@RequestMapping可以获得这里设置的键值对。