@Value

如何從 yml 的設定檔中取值

@Value("${server.port}")
private String port;

完整程式碼

@RestController
public class MagicController {

    @Value("${server.port}")
    private String port;

    @GetMapping({"/", "/sayHello"})
    public String sayHello(){
        System.out.println(port);
        return "hello world" + port;
    }
}

當需要把屬性設為 static 時

參考資料:(https://blog.csdn.net/hunt_er/article/details/104992227?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf)

有時候在撰寫 Util 這類工具,會將方法寫成 static ,這時就需要使用 static 的屬性,而 @Value 的塞值時機為 Spring boot產生 Bean 的時候,與 static 不同,所以需要搭配 @PostConstruct,當 Bean 產生之後,再塞回 static 下方範例中 : 主要使用 filePath,然後用 filePath2 去取 @Value 的值 再使用 @PostConstruct 去給值

private static String filePath;

@Value("${FilePath}")
private String filePath2;

@PostConstruct
private void init() {
    filePath = filePath2;
}

@PostConstruct、@PreDestroy

參考資料:(https://www.tpisoftware.com/tpu/articleDetails/442)

這兩個註釋並非Spring所定義的,而是被定義的J2EE的套件裡,在一個要被建立成Bean的類別中,新增一個方法並加上@PostConstruct註釋,此方法將會在這個Bean所有必要的屬性設定完成後才執行初始化的工作.

Last updated