跳至主要內容

SpringBoot-常用注解

holic-x...大约 3 分钟JAVA框架

SpringBoot-常用注解

学习核心

  • Springboot常用注解

学习资料

Springboot常用注解

​ 在Springboot自动装配和启动流程原理分析中对注解进行了拆解和分析,此处针对常用注解做核心汇总

注解说明
@SpringBootApplication核心注解,作用于Spring Boot主类,标识这是一个 Spring Boot 应用,用于开启Springboot的各项能力
其是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合
@EnableAutoConfiguration允许 Spring Boot 自动配置注解
开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean
其核心在于AutoConfigurationImportSelector:实现自动加载、去重、过滤
@Configuration用于定义配置类,指出该类是 Bean 配置的信息源
类似传统的xml配置文件,一般加在主类上
@ComponentScan组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文
@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
@ProfilesSpring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效
任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机
@ConfigurationProperties配置属性注解(可以理解为将xml配置和实体进行绑定),在自定义Starter中会用到
Spring框架相关注解(Spring框架中有说明)
@Repository分层:用于修饰数据访问层组件
@Service分层:用于修饰Service业务层组件
@RestController分层:用于修饰Controller控制器层组件(rest风格:等价于@Controller+@ResponseBody组合)
@ResponseBody用于返回JSON数据结果(搭配@RequestMapping 路径映射配置注解使用)
@Component通用组件定义
@BeanBean对象定义,相当于XML中的<bean></bean>
放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理
@AutoWired优先byType方式注入
@Qualifier当有多个同一类型的Bean时,可以用@Qualifier("name")来指定。与@Autowired配合使用
@Resource(name="name",type="type")默认优先byName方式注入(根据name、type的配置与否会限定注入方式)
@RequestMapping处理请求地址映射的注解
@RequestParam处理请求URL的参数并封装到方法参数(XXX?param=xxx)以?后带的参数形式
@PathVariable处理请求URL的参数并封装到方法参数(XXX/{param})以占位符的形式

@EnableAutoConfiguration

允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。

如:当前类路径下有 Mybatis 这个 JAR 包,MybatisAutoConfiguration 注解就能根据相关参数来配置 Mybatis 的各个 Spring Bean。

@EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:

● 从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;

● 去重,并将exclude和excludeName属性携带的类排除;

● 过滤,将满足条件(@Conditional)的自动配置类返回

@Configuration

用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3