Dalam projek, beberapa maklumat konfigurasi sering diperlukan. Maklumat ini mungkin mempunyai konfigurasi yang berbeza dalam persekitaran ujian dan persekitaran pengeluaran, dan mungkin perlu diubah suai kemudian berdasarkan keadaan perniagaan sebenar. Kami tidak boleh mengekodkan konfigurasi ini dalam kod. Adalah lebih baik untuk menulisnya dalam fail konfigurasi Sebagai contoh, anda boleh menulis maklumat ini dalam fail application.yml
.
Jadi, bagaimana untuk mendapatkan atau menggunakan alamat ini dalam kod? Terdapat 2 kaedah.
Kami boleh mendapatkan nilai yang sepadan dengan kunci dalam fail konfigurasi (application.yml) melalui ${key} yang dianotasi dengan @Value. Kaedah ini sesuai untuk perkhidmatan mikro Situasi yang agak sedikit
Dalam projek sebenar, apabila menghadapi perniagaan yang kompleks dan logik yang kompleks, anda perlu mempertimbangkan untuk merangkum satu atau lebih kelas Konfigurasi. Sebagai contoh, jika perniagaan perlu menggunakan perkhidmatan mikro 1, perkhidmatan mikro 2 dan perkhidmatan mikro 3 pada masa yang sama, maka perkhidmatan mikro ini akan dipanggil.
Adalah terlalu menyusahkan untuk menggunakan anotasi @Value untuk memperkenalkan alamat perkhidmatan mikro yang sepadan satu demi satu.
Mungkin dalam perniagaan sebenar, terdapat lebih daripada tiga perkhidmatan mikro ini, atau lebih daripada sedozen. Untuk situasi ini, kita boleh mentakrifkan kelas MicroServiceUrl
untuk menyimpan URL perkhidmatan mikro secara khusus
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "url") public class MicroServiceUrl { private String orderUrl; private String userUrl; private String shoppingUrl; public String getOrderUrl() { return orderUrl; } public void setOrderUrl(String orderUrl) { this.orderUrl = orderUrl; } public String getUserUrl() { return userUrl; } public void setUserUrl(String userUrl) { this.userUrl = userUrl; } public String getShoppingUrl() { return shoppingUrl; } public void setShoppingUrl(String shoppingUrl) { this.shoppingUrl = shoppingUrl; } }
Tambah kebergantungan:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
Konfigurasi semasa ditulis. Pada ketika ini, tidak perlu memperkenalkan URL perkhidmatan mikro ini satu demi satu dalam kod Anda boleh terus menyuntik kelas konfigurasi yang baru anda tulis melalui anotasi @Resource dan menggunakannya >
import com.example.test1.config.MicroServiceUrl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * 获取配置文件(application.yml)中和 key 对应的 value 值 * 2种方法 */ @RestController @RequestMapping("/test") public class ConfigController { private static final Logger LOGGER = LoggerFactory.getLogger(ConfigController.class); @Value("${url.orderUrl}") private String orderUrl; @Resource private MicroServiceUrl microServiceUrl; @RequestMapping("/config") public String testConfig() { LOGGER.info("获取的地址为:{}", orderUrl); LOGGER.info("微服务1地址为:{}", microServiceUrl.getOrderUrl()); LOGGER.info("微服务2地址为:{}", microServiceUrl.getUserUrl()); LOGGER.info("微服务3地址为:{}", microServiceUrl.getShoppingUrl()); return "success"; } }
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan nilai dalam application.yml dalam springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!