Spring,SpringMVC,Spring Boot中常见注解(持续更新)
创始人
2025-05-30 00:46:10
0

在学习Java框架时,注解的学习是必不可少的,这篇文章就来记录一下这些框架中的常用注解

常用注解

  • 一,spring
    • 1.声明bean的注解
    • 2.注入bean的注解
    • 3.3.java配置类相关注解
    • 4.切面(AOP)相关注解
  • 二,Spring MVC
  • 三,springboot
    • 1.@SpringBootApplication
      • 1.1@SpringBootConfiguration
      • 1.2@EnableAutoConfiguration
      • 1.3@ComponentScan
      • SpringBootApplication参数详解
    • 2.@Import
    • 3.@Conditional
    • 4.@ConditionalOnBean
    • 5.@ConditionalOnMissingBean

一,spring

1.声明bean的注解

@Component 组件,没有明确的角色

@Service 在业务逻辑层使用(service层)

@Repository 在数据访问层使用(dao层)

@Controller 在展现层使用,控制器的声明(C)

2.注入bean的注解

@Autowired:由Spring提供

@Inject:由JSR-330提供

@Resource:由JSR-250提供

都可以注解在set方法和属性上,推荐注解在属性上(一目了然,少写代码)。

3.3.java配置类相关注解

@Configuration 声明当前类为配置类,相当于xml形式的Spring配置(类上)

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

@Configuration 声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上)

@ComponentScan 用于对Component进行扫描,相当于xml中的(类上)

@WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,可以替代这两个注解

4.切面(AOP)相关注解

Spring支持AspectJ的注解式切面编程。

@Aspect 声明一个切面(类上)
使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。

@After 在方法执行之后执行(方法上)

@Before 在方法执行之前执行(方法上)

@Around 在方法执行之前与之后执行(方法上)

@PointCut 声明切点
在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)

二,Spring MVC

@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都能获得在此处设置的键值对。

三,springboot

1.@SpringBootApplication

放置在Springboot启动类上,表明该类是开启Springboot容器的入口
@SpringBootApplication是一个"三体"结构,重要的只有三个Annotation:下文:

1.1@SpringBootConfiguration

继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。

1.2@EnableAutoConfiguration

它的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web ,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置

1.3@ComponentScan

扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。是以前的context:component-scan(以前使用在xml中使用的标签,用来扫描包配置的平行支持)。所以本demo中的User为何会被spring容器管理。本质上等于context:component-scan配置

SpringBootApplication参数详解

1.scanBasePackages

@SpringBootApplication只会扫描@SpringBootApplication注解标记类包下及其子包的类(特定注解标记,比如说@Controller,@Service,@Component,@Configuration和@Bean注解等等)纳入到spring容器,如果我们定义的Bean不在@SpringBootApplication注解标记类相同包下及其子包的类,所以需要我们去配置一下扫包路径。

修改启动类,@SpringBootApplication(scanBasePackages = "com.xxx.xxx"),指定扫描路径:

当然使用@SpringBootApplication(scanBasePackageClasses = MyConfig.class),指定scanBasePackageClasses参数的value值是你需要扫描的类也可以,结果一样,不过如果多个配置类不在当前包及其子包下,则需要指定多个。

2.exclude或excludeName

在上面的列子的相同包下(com.xxx.xxx)配置的bean,都会纳入到spring容器中(@Component),我们知道@SpringBootApplication注解会扫描当前包及其子包如果我们需要将其排除在spring容器中,可以使用@SpringBootApplication的另外二个参数(exclude或excludeName)

@SpringBootApplication(excludeName = {"com.xxx.xxx.类名"})

2.@Import

这是 Spring 3.0 添加的新注解,用来导入一个或者多个 @Configuration 注解修饰的类,这在 Spring Boot 里面应用很多。

@Import({User.class, DBHelper.class})*      给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名* ```@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {
}````

3.@Conditional

条件装配:满足Conditional指定的条件,则进行组件注入

4.@ConditionalOnBean

组合 @Conditional 注解,当容器中有指定的 Bean 才开启配置。

5.@ConditionalOnMissingBean

组合 @Conditional 注解,和 @ConditionalOnBean 注解相反,当容器中没有指定的 Bean 才开启配置。

相关内容

热门资讯

原创 4... 11月21日19点,湖北黄冈市黄州区某小区羽毛球馆,灯光惨白。43岁的刑辩律师林辉一个跃步劈杀,球拍...
7轮6负!英超-红军锋线集体梦... 北京时间11月22日23时,2025-26赛季英超联赛第12轮继续进行,坐镇安菲尔德球场的利物浦0-...
问法预告丨聚焦“保险理赔纠纷”... 保险为参保者提供兜底保障,是人们生活和工作过程中的贴心保障。可是,“保”到用时限制多的情况时有发生,...
原创 中... 据澎湃新闻报道,当地时间11月16日的福克斯新闻晨间节目里,美国财政部长贝森特的表态把中美战略博弈的...
每周股票复盘:勘设股份(603... 截至2025年11月21日收盘,勘设股份(603458)报收于7.77元,较上周的8.86元下跌12...
原创 日... 据极目新闻报道,近日,日本政坛掀起了一场政治风暴。防卫大臣小泉进次郎在11月18日的记者会上公开打脸...
“免费梅州”政策持续助力招好商... “此次项目的成功落地将进一步壮大园区汽车零部件产业集群,助力梅州产业结构向高端化、智能化、集群化转型...
男子花762元下单20余件,蕉... 多名网友发文称,蕉内官方小程序突然出现大幅折扣,不少原价数百元的商品低至22元,可当消费者下单后,却...
视觉中国致歉:侵权涉案作品已于... 11月22日,视觉(中国)文化发展股份有限公司等三家公司,在视觉中国官网联合发布“关于戴建峰起诉视觉...
公共政策正向排斥:理论建构与中... 党的二十届四中全会强调,“十五五”时期经济社会发展必须“尊重人民主体地位,紧紧依靠人民,维护人民根本...