
属性普通注入类型安全的属性注入Maven属性注入
属性普通注入写一个测试类:
@Component
@PropertySource("classpath:book.properties")
public class Book {
@Value("${book.name}")
private String Name;
@Value("${book.author}")
private String Autor;//字符串
@Value("${book.tags}")
private String[] tags;//字符串数组
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getAutor() {
return Autor;
}
public void setAutor(String autor) {
Autor = autor;
}
public String[] getTags() {
return tags;
}
public void setTags(String[] tags) {
this.tags = tags;
}
@Override
public String toString() {
return "Book{" +
"Name='" + Name + ''' +
", Autor='" + Autor + ''' +
", tags=" + Arrays.toString(tags) +
'}';
}
}
紧接着,再写book.properties,因为application.properties是系统配置类,所以我们新建一个配置文件,通过java代码注解@PropertySource将自己的配置文件放在里面,@Value将自己定义的属性变量加入
book.properties的内容:
book.name=红楼梦 book.author=曹雪芹 book.tags=名著,经典,明代
测试代码:
@SpringBootTest
class Demo06ApplicationTests {
@Autowired
Book book;//注入类
@Test
void contextLoads() {
System.out.println("book = " + book);//打印这个类的内容
}
}
之后我们运行单元测试看结果,发现打印出来会出现乱码,是因为文件编码设置不对,我们应该将文件编码都改为UTF-8,如图:
最后结果:
我们在Book类加上@ConfigurationProperties注解,里面prefix前缀设置为book,之后它就会自动去扫描配置文件中的属性,删除@Value 属性
@Component
@PropertySource("classpath:book.properties")
@ConfigurationProperties(prefix = "book")//新加入注解
public class Book {
private String Name;
private String Autor;
private String[] tags;
....//后面代码省略
最后成功运行,当然经过测试,属性的大小写不会影响自动扫描,不区分大小写。
Maven属性注入application.properties配置:
app.encoding=@project.build.sourceEncoding@ aap.version=@java.version@
得到:
app.encoding=UTF-8 aap.version=11.0.6
这种配置必须要写在application.properties配置中,其它自定义的配置类不会扫描,有过滤器的存在
详情可以参考这篇文章Maven工程问题
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)