Spring Boot注解
文章目录
- 简介
- @SpringBootApplication
- @EnableAutoConfiguration
- 条件自动配置
- @ConditionalOnClass 和 @ConditionalOnMissingClass
- @ConditionalOnProperty
- @ConditionalOnResource
- @ConditionalOnWebApplication 和 @ConditionalOnNotWebApplication
- @ConditionalExpression
- @Conditional
Spring Boot注解
简介
Spring Boot通过自动配置让我们更加简单的使用Spring。在本文中我们将会介绍org.springframework.boot.autoconfigure 和org.springframework.boot.autoconfigure.condition 里面经常会用到的一些注解。
@SpringBootApplication
首先我们看一下@SpringBootApplication:
@SpringBootApplication
public class AnotationApp {public static void main(String[] args) {SpringApplication.run(AnotationApp.class, args);}
}
@SpringBootApplication被用在Spring Boot应用程序的Main class中,表示整个应用程序是Spring Boot。
@SpringBootApplication实际上是@Configuration, @EnableAutoConfiguration 和 @ComponentScan 的集合。
@EnableAutoConfiguration
@EnableAutoConfiguration 意味着开启了自动配置。这意味着Spring Boot会去在classpath中查找自动配置的beans,并且自动应用他们。
注意, @EnableAutoConfiguration需要和@Configuration配合使用。
@Configuration
@EnableAutoConfiguration
public class VehicleFactoryConfig {}
条件自动配置
有时候,我们在自定义自动配置的时候,希望根据某些条件来开启自动配置,Spring Boot 提供了一些有用的注解。
这些注解可以和@Configuration 类 或者 @Bean 方法一起使用。
@ConditionalOnClass 和 @ConditionalOnMissingClass
这两个注解的意思是,如果注解参数中的类存在或者不存在则Spring会去实例化自动配置的bean。
@Configuration
@ConditionalOnClass(DataSource.class)
public class MySQLAutoconfiguration {}
@ConditionalOnBean 和 @ConditionalOnMissingBean
这两个和上面的区别在于,这两个是判断是否有实例化的bean存在。
@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {// ...
}
@ConditionalOnProperty
使用这个注解我们可以判断Property的某些属性是不是需要的值:
@Bean
@ConditionalOnProperty(name = "usemysql", havingValue = "local"
)
DataSource dataSource() {// ...
}
@ConditionalOnResource
只有当某些resource存在的时候,才会起作用。
@ConditionalOnResource(resources = "classpath:mysql.properties")
Properties additionalProperties() {// ...
}
@ConditionalOnWebApplication 和 @ConditionalOnNotWebApplication
这两个注解通过判断是否web应用程序。
@Bean@ConditionalOnWebApplicationHealthCheckController healthCheckController() {// ...return null;}
@ConditionalExpression
这个注解可以使用SpEL构造更加复杂的表达式:
@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {// ...
}
@Conditional
还有一种更加复杂的应用叫@Conditional,它的参数是一个自定义的condition类。
@Bean@Conditional(HibernateCondition.class)Properties newAdditionalProperties() {//...return null;}
public class HibernateCondition implements Condition {@Overridepublic boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {return false;}
}
这个类需要实现matches方法。
本文的例子可以参考:https://github.com/ddean2009/learn-springboot2/tree/master/spring-boot-annotations
更多精彩内容且看:
- 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
- Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
- java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
更多教程请参考 flydean的博客
Spring Boot注解相关推荐
- 超级详细的Spring Boot 注解总结
日常编程中我相信大家肯定都用过spring,也用过spring的注解,哪怕面试的时候也经常会被问到一些spring和spring boot注解的作用和含义等,那么这篇就带大家来看看超级详细的Sprin ...
- Spring Boot 注解原理
Spring Boot 注解原理 首先,先看SpringBoot的主配置类: @SpringBootApplication public class StartEurekaApplication {p ...
- Spring Boot注解的运行原理
Spring Boot 是一个基于 Spring Framework 的开源框架,通过简化配置和开发过程,使 Spring 应用程序的开发变得更加快速和便捷.在 Spring Boot 中,注解是非常 ...
- Spring Boot注解大全,一键收藏了!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:www.cnblogs.com/tanwei81/p/681 ...
- 一次性搞懂Spring Boot 注解原理与自动装配原理,图文并茂,万字长文!
原文:cnblogs.com/jing99/p/11504113.html 首先,先看SpringBoot的主配置类: @SpringBootApplication public class Star ...
- 【建议收藏】Spring Boot注解全梳理!
一.注解(annotations)列表 @SpringBootApplication:包含了**@ComponentScan**.「@Configuration」 和 「@EnableAutoConf ...
- Spring boot 注解 ConfigurationProperties 的使用
原创自 第一勺金 00 最近在学习使用 spring boot.发现其中 @ConfigurationProperties这个注解使用的比较多.搜了比较多的文档都是英文,避免以后忘记,这里我也总结下它 ...
- Spring Boot 注解大全,一键收藏!回城路上复习!
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | www.cnblogs.com/tanwei8 ...
- 10000 字讲清楚 Spring Boot 注解原理
今日推荐 借助Redis锁,完美解决高并发秒杀问题还在直接用JWT做鉴权?JJWT真香Spring Boot 操作 Redis 的各种实现Fluent Mybatis 牛逼!Nginx 常用配置清单这 ...
最新文章
- 【Android】自定义listview快速滚动条
- [计算机]“华为的冬天”——任正非(华为总裁)
- 全国计算机等级考试题库二级C操作题100套(第19套)
- Linux多线程详解
- 在ASP.NET Core 2.0中创建Web API
- Java IO3:字符流
- 层次分析法在高校教学评价体系中的应用(原理+实例+工具)
- 安装英伟达驱动,提示驱动和windows版本不兼容或是硬件不兼容的问题
- 计算机声卡的步骤,声卡调试教程
- 几何基础 笛沙格定理
- 2021全国省市区街道社区五级SQL文件以及JAVA爬取代码
- java thread 简单写法_Java线程池写法改写为C#线程池写法
- CF Stressful training优先队列加二分搜答案
- 小波变换第2讲:尺度函数与小波函数
- 一个比较稳定的PLC通讯模块设计
- An End-to-End Steel Surface Defect Detection Approach via Fusing Multiple Hierarchical Features
- 代表着团结幸福平安的中国结绳
- ffmpeg实例,colorkey,chromakey抠图的使用
- 解决找不到roslyn\csc.exe文件问题
- 自信心、自制力。Java