属性普通注入类型安全的属性注入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条)