SpringBoot学习
Posted 学无止境
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot学习相关的知识,希望对你有一定的参考价值。
获取全局配置文件中自定义配置的值,有两种方式:
自己定义一个配置文件test.properties
my.name=xuhaixing my.age=25 my.sex=man
一、使用@Value("${}")注解进行某个属性的注入
@Configuration //证明这是一个配置类 @PropertySource(value = {"classpath:test.properties"}, ignoreResourceNotFound = true)//可以放多个,{}里面用,分开 public class User { //可以不用set方法,直接就能注入,属于注入 @Value("${my.name}") private String name; @Value("${my.age}") private int age; @Value("${my.sex}") private String sex; public String getName() { return name; } public int getAge() { return age; } public String getSex() { return sex; } }
其中@PropertySource指明要加载的配置文件,如果没有用该注解指明,默认读取的springboot的全局配置文件,即:application.properties或application.yml
可以在controller中把user类注入,然后测试一下:
@RestController public class HelloController { @Autowired private User user; @RequestMapping(value = "/getUser") public String getUser() { return user.getName() + " " + user.getSex() + " " + user.getAge(); } }
注意:省略了springboot的pom文件以及启动类
二、使用@ConfigurationProperties注解进行对象属性的全量注入
@Configuration @PropertySource(value = "classpath:test.properties") @ConfigurationProperties(prefix = "my") //需要有set方法,prefix指明该对象中所有属性的前缀,对应文件中的属性名 public class UserPrefix { private String name; private int age; private String sex; public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public void setSex(String sex) { this.sex = sex; } public String getName() { return name; } public int getAge() { return age; } public String getSex() { return sex; } }
然后注入到controller中,测试
@RestController @EnableConfigurationProperties({UserPrefix.class}) //激活配置,测试了一下,也可以没有 public class HelloPrefixController { @Autowired private UserPrefix userPrefix; @RequestMapping(value = "/getUserPrefix") public String getUserPrefix() { return userPrefix.getName() + " " + userPrefix.getSex() + " " + userPrefix.getAge(); } }
注意:两种让@ConfigurationProperties生效的方法:
1、在这里@ConfigurationProperties所注解的类,添加了@Configuration注解,表示该类UserPrefix会注入到IOC容器中作为bean,所以@ConfigurationProperties注解就可以自动生效,自动全量注入该对象的自定义属性。其实把@Configuration替换成@Component等任何一个可以实现注入IOC容器的注解都可以使@ConfigurationProperties生效;
2、如果@ConfigurationProperties所注解的类没有添加注解注入到IOC容器中,则必须在使用的地方添加@EnableConfigurationProperties注解并指明需要注入到容器的类,来注入到容器中,从而使@ConfigurationProperties生效;
结论:这里用了@Configuration注解,所以可以去掉@EnableConfigurationProperties({UserPrefix.class}) ,测试没问题。
转载:https://blog.csdn.net/u012326462/article/details/80686462
以上是关于SpringBoot学习的主要内容,如果未能解决你的问题,请参考以下文章
全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段
SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段
Spring boot:thymeleaf 没有正确渲染片段