总结归纳SpringBoot中常用的一些注解

烟雨彷徨 2021-08-09 14:40:15 浏览数 (2225)
反馈

SpringBoot作为当下最为火热、流行的微服务架构,深受广大开发者和开发商的青睐。如果可以熟练应用SpringBoot一些常用的注解,那么对于SpringBoot的项目开发,就将会是事半功倍。下面,将为大家介绍SpringBoot中一些常用的注解,希望能够对大家的学习和工作能有所帮助!

@PropertySource

作用是:对自定义的properties文件加载

使用:@PropertySource(value={"classpath:people.properties"})或者@PropertySource(value="classpath:people.properties")

2021041910311636

properties文件,获取到值乱码问题

乱码解决:

file ->settings -->file encoding--> 勾选Transparent native-to-ascill conversion

2021041910311638

@ImportResource

作用:可以让spring的配置文件生效

2021041910311639

使用:在启用类上加ImportResource注解,如@ImportResource(value = "classpath:person.xml")或者@ImportResource(locations ={"classpath:person.xml"})

@Conditional

作用:必须是@Conditional指定的条件成立,才给容器中添加组件或者是让自动配置类生效。

2021041910311640

以 HttpEncodingAutoConfiguration 自动配置类举例

@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(ServerProperties.class)
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
@ConditionalOnClass(CharacterEncodingFilter.class)
@ConditionalOnProperty(prefix = "server.servlet.encoding", value = "enabled", matchIfMissing = true)
public class HttpEncodingAutoConfiguration {
 
	private final Encoding properties;
 
	public HttpEncodingAutoConfiguration(ServerProperties properties) {
		this.properties = properties.getServlet().getEncoding();
	}
 
	@Bean
	@ConditionalOnMissingBean
	public CharacterEncodingFilter characterEncodingFilter() {
		CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
		filter.setEncoding(this.properties.getCharset().name());
		filter.setForceRequestEncoding(this.properties.shouldForce(Encoding.Type.REQUEST));
		filter.setForceResponseEncoding(this.properties.shouldForce(Encoding.Type.RESPONSE));
		return filter;
	}

@ConditionalOnMissingBean:作用是如果容器中不存在CharacterEncodingFilter 这个bean则实例化创建一个,存在就不走下面的代码

@ConditionalOnClass(CharacterEncodingFilter.class):作用是如果容器中存在CharacterEncodingFilter 这个bean(其中一个条件)则才能够实例化者个自动配置类HttpEncodingAutoConfiguration 

@ConditionalOnProperty(prefix = "server.servlet.encoding", value = "enabled", matchIfMissing = true)作用是如果配置文件中配置了server.servlet.encoding=enabled则才能够实例化者这个个自动配置类HttpEncodingAutoConfiguration 

springBoot中所有的自动配置类位置:

orgspringframeworkootspring-boot-autoconfigure2.4.5spring-boot-autoconfigure-2.4.5.jar!META-INFspring.factories文件中

2021041910311641

如何判断spring.factories这个文件中那些自动配置类是生效的?

在yml或者applicaton.properties中配置,会在控制台打印自动配置类生效报告:

########打印自动配置类生效的报告##########
debug =true

其中:Negative match:表示未生效;Positive match:表示生效的

2021041910311642

以上关于SpringBoot项目中一些常用注解的介绍和具体使用方法的文章就介绍到此结束了,想要了解更多相关SpringBoot的其他注解的内容,可以搜索W3Cschool其他相关技术文章,希望能对大家的学习有所帮助!

0 人点赞