View on GitHub

spring-boot-in-action

Spring Boot 实战笔记

应用程序 Bean 的配置外置

在 Controller 中收集配置

application.properties 文件

新增配置:

amazon.associateId=Jueee
ReadingListController 类

一、新增属性注入:

@ConfigurationProperties(prefix="amazon")
public class ReadingListController {
    private String associateId;
}

二、新增 associateId 的 setter 方法

    public void setAssociateId(String associateId) {
        this.associateId = associateId;
    }

三、将 associateId 放入模型

model.addAttribute("amazonID", associateId);
readingList.html

新增展示:

<span th:text="${amazonID}">amazonID</span>

在一个类里收集属性

AmazonProperties 类

与其在 ReadingListController 类 里加载配置属性,还不如创建一个单独的Bean AmazonProperties 类

为它加上@ConfigurationProperties 注解,让这个Bean收集所有配置属性。

ReadingListController 类

有了加载 amazon.associateId 配置属性的 AmazonProperties 后,我们可以调整 ReadingListController。

    private AmazonProperties amazonProperties;
    
	// 注入 AmazonProperties
    @Autowired
    public ReadingListController(ReadingListRepository readingListRepository, AmazonProperties amazonProperties) {
        this.readingListRepository = readingListRepository;
        this.amazonProperties = amazonProperties;
    }
    // 向模型中添加 Associate ID
    model.addAttribute("amazonID", amazonProperties.getAssociateId());