首页 > 编程语言 >Java开发Spring常见注解

Java开发Spring常见注解

时间:2024-05-21 09:52:28浏览次数:26  
标签:Java Spring 开启 支持 注解 方法 注入

Java开发Spring常见注解

   前言

   Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式。

   注解本身没有功能的,就和 xml 一样。注解和 xml 都是一种元数据,元数据即解释数据的数据,这就是所谓配置。

   Spring注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效率。 下面按照分类讲解Spring中常用的一些注解。

   Spring部分

   一、声明bean的注解

   1. @Component
   表示一个带注释的类是一个“组件”,成为Spring管理的Bean。当使用基于注解的配置和类路径扫描时,这些类被视为自动检测的候选对象。同时@Component还是一个元注解

   2. @Service
  组合注解(组合了@Component注解),应用在service层(业务逻辑层)

1 @Slf4j
2 @Service
3 @RequiredArgsConstructor(onConstructor_ = {@Autowired})
4 public class TppAgencyHttpProxyServiceImpl implements TppAgencyHttpProxyService {
5 }

  3. @Repository
  组合注解(组合了@Component注解),应用在dao层(数据访问层)。

1 @Repository
2 public interface InsuranceAgreementMapper extends MPJBaseMapper<InsuranceAgreementDO> {
3 
7 }

 

4. @Controller
组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上

二、注入bean的注解

1. @Autowired
由 Spring 框架提供,是 Spring 的核心注解之一,用于实现依赖注入,支持按类型注入,也可以通过 @Qualifier 注解实现按名称注入。其典型使用场景是:
@Autowired
private MyService myService;


默认是按照类型装配注入的,如果想按照名称来装配注入,则需要结合@Qualifier一起使用由Spring提供

Spring提供的工具(由Spring的依赖注入工具(BeanPostProcessor、BeanFactoryPostProcessor)自动注入)

2. @Inject
由JSR-330提供

3. @Resource

由 JSR-250 规范提供,是一种标准的 Java 注解,广泛应用于各种 Java EE 规范中。它用于将资源注入到应用程序中,支持按名称或类型注入。其典型使用场景是:


@Resource
private MyService myService;

 

@Resource和@Autowired的区别

说明:@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入

1)@Resource是由J2EE(JSR-250)提供,而@Autowired是由spring提供,故减少系统对spring的依赖建议使用
2)@Resource和@Autowired都可以书写标注在字段或者该字段的setter方法之上

 


三、配置类相关注解

1. @Configuration
声明当前类为配置类,相当于xml形式的Spring配置

2. @Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式


3. @ComponentScan 用于对Component进行扫描,相当于xml中的:
<context:component-scan base-package="com.yp"></context:component-scan>

比如:指定了spring扫描的包路径为:com.eugene.sumarry.aop.csdn,这将说明在此包下的所有spring识别的注解都会被解析


四、切面(AOP)相关注解

1. @Aspect
声明一个切面(类上) 使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
@After :在方法执行之后执行(方法上)。
@Before: 在方法执行之前执行(方法上)。
@Around: 在方法执行之前与之后执行(方法上)。
@AfterReturning
@AfterThrowing


2. @PointCut
声明切点

3. @EnableAspectJAutoProxy
在java配置类中使用@EnableAspectJAutoProxy注解,开启Spring对AspectJ代理的支持(类上)。其中,proxyTargetClass属性指定了aop使用哪种代理方式来增强目标类

五、SpringMVC部分

1. @EnableWebMvc
在配置类中开启Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若无此句,重写WebMvcConfigurerAdapter方法(用于对SpringMVC的配置)。

2. @Controller
声明该类为SpringMVC中的Controller

3. @RequestMapping
用于映射Web请求,包括访问路径和参数(类或方法上)

4. @ResponseBody
支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)

5. @RequestBody
允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)

6. @PathVariable
用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。
6. @RestController
该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。
7. @ExceptionHandler
用于全局处理控制器里的异常。

 


六、@Enable*注解说明

这些注解主要用来开启对xxx的支持。
@EnableAspectJAutoProxy 开启对AspectJ自动代理的支持。
@EnableAsync: 开启异步方法的支持。
@EnableScheduling: 开启计划任务的支持。
@EnableWebMvc :开启Web MVC的配置支持。
@EnableConfigurationProperties :开启对@ConfigurationProperties注解配置Bean的支持。
@EnableJpaRepositories:开启对SpringData JPA Repository的支持。
@EnableTransactionManagement:开启注解式事务的支持。
@EnableTransactionManagement: 开启注解式事务的支持。
@EnableCaching: 开启注解式的缓存支持。

标签:Java,Spring,开启,支持,注解,方法,注入
From: https://www.cnblogs.com/hld123/p/18203336

相关文章

  • springboot2 - lettuce
    spring操作redis,默认使用的是lettuce,介绍一下相关代码。Maven依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>......
  • 聊聊如何利用spring实现服务隔离
    前言假设我们有个场景,我们需要实现服务之间的数据隔离、配置隔离、依赖的springbean之间隔离。大家会有什么实现思路?今天给大家介绍spring-cloud-context里面有个NamedContextFactory可以达到上面的效果NamedContextFactory简介NamedContextFactory可以实现子容器,通过它创建子......
  • spring boot中的定时任务
    SpringBoot中的定时任务主要通过@Scheduled注解以及SchedulingConfigurer接口实现。@Scheduled注解是Spring提供的一个注解,用于标记方法作为定时任务执行:配置方法在指定的时间间隔或时间点执行,实现各种定时任务需求。//在你需要定时的方法上加上@Scheduled注解,并用corn表达......
  • springboot2 - ehcache
    介绍ehcache一下在spring环境下的应用。如果是单机系统,ehcache一般是首选方案,想通过切换redis提高性能,意义不大,反而会增加部署和维护负担。工具函数如果想在spring环境下,封装自己的工具函数,下面这些基础代码估计会用到。场景:像是Excel导入数据,需要大批量更新缓存时......
  • Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
    一、写在开头在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized、Lock或者AtomicInteger;我们还学习过CAS算法,在那篇博文中我们同样也提及atomic。那么今天,我们就来好好学一学Atomic原子库,一个基于CAS算......
  • spring boot 邮件发送
    之前的发邮件的话比较繁琐,springbbot帮我们简化了开发,引入mail的启动类支持<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>既然springboot中已经配置了,说明它里面肯定有一个关于mail......
  • SpringCache
    实现了基于注解的缓存功能导入依赖org.springframwork.bootspring-boot-starter-cachespring-boot-starter-data-redis2.7.3@EnableCaching一般放在启动类上,表示我们使用基于注解的缓存功能----开启缓存注解功能@Cacheable一般加在方法上,如果查询到缓存,就返回缓存数据......
  • Spring 对 Junit4,Junit5 的支持上的运用
    1.Spring对Junit4,Junit5的支持上的运用@目录1.Spring对Junit4,Junit5的支持上的运用每博一文案2.Spring对Junit4的支持3.Spring对Junit5的支持4.总结:5.最后:每博一文案关于理想主义,在知乎上看到一句话:“他们并不是不懂别人口中的现实,他们只是不信,事情只能是现在......
  • Spring Boot —— 集成文档工具
    Swagger->SpringDoc官网地址:https://springdoc.org/是基于OpenAPI3.0规范构建的集成SwaggerUI和ReDoc文档生成工具,可自动注入OpenAPI规范的JSON描述文件,支持OAUTH2、JWT等认证机制。推荐SpringBoot2.4及以上版本使用springdoc-openapi-ui集成Swagger3.x,SpringBoo......
  • 13年过去了,Spring官方竟然真的支持Bean的异步初始化了!
    你好呀,我是歪歪。两年前我曾经发布过这样的一篇文章《我是真没想到,这个面试题居然从11年前就开始讨论了,而官方今年才表态。》文章主要就是由这个面试题引起:Spring在启动期间会做类扫描,以单例模式放入ioc。但是spring只是一个个类进行处理,如果为了加速,我们取消spring自带......