两类属性注入方式

两类属性注入方式,第1张

两类属性注入方式

目录

属性普通注入类型安全的属性注入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配置:

[email protected]@
[email protected]@

得到:

app.encoding=UTF-8
aap.version=11.0.6

这种配置必须要写在application.properties配置中,其它自定义的配置类不会扫描,有过滤器的存在

详情可以参考这篇文章Maven工程问题

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5703580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存