<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Spring Boot `@ConfigurationProperties`教程 > [http://zetcode.com/springboot/configurationproperties/](http://zetcode.com/springboot/configurationproperties/) Spring Boot `@ConfigurationProperties`教程展示了如何在 Spring Boot 應用中使用`@ConfigurationProperties`將屬性綁定到對象。 Spring 是流行的 Java 應用框架,而 Spring Boot 是 Spring 的演進,可以幫助輕松地創建獨立的,生產級的基于 Spring 的應用。 ## `@ConfigurationProperties` `@ConfigurationProperties`允許輕松地將整個屬性和 Yaml 文件映射到一個對象。 它還允許使用 JSR-303 bean 驗證來驗證屬性。 默認情況下,注解從`application.properties`文件中讀取。 可以使用`@PropertySource`注解來更改源文件。 ## Spring Boot `@ConfigurationProperties`示例 以下應用從`application.properties`文件讀取配置數據,該文件是默認的 Spring Boot 配置文件。 ```java pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ │ Application.java │ │ │ MyRunner.java │ │ └───conf │ │ AppProperties.java │ └───resources │ application.properties └───test └───java ``` 這是項目結構。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>springbootconfigurationproperties</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` 這是 Maven `pom.xml`文件。 `resources/application.properties` ```java spring.main.banner-mode=off app.colour=steelblue app.lang=en app.theme=dark ``` 在`application.properties`文件中,我們具有三個自定義屬性。 它們具有`app`前綴。 `com/zetcode/conf/AppProperties.java` ```java package com.zetcode.conf; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = "app") public class AppProperties { private String colour; private String lang; private String theme; public String getColour() { return colour; } public void setColour(String colour) { this.colour = colour; } public String getLang() { return lang; } public void setLang(String lang) { this.lang = lang; } public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } } ``` 這些屬性將綁定到此配置對象。 ```java @Configuration @ConfigurationProperties(prefix = "app") public class AppProperties { ``` `@Configuration`注解使它成為 Spring 管理的 bean。 在`@ConfigurationProperties`中,我們為屬性設置前綴。 `com/zetcode/MyRunner.java` ```java package com.zetcode; import com.zetcode.conf.AppProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class MyRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(Application.class); @Autowired private AppProperties appProperties; @Override public void run(String... args) throws Exception { logger.info("Colour: {}", appProperties.getColour()); logger.info("Language: {}", appProperties.getLang()); logger.info("Theme: {}", appProperties.getTheme()); } } ``` 在`MyRunner`中,我們將`AppProperties`注入字段中并讀取其值。 `com/zetcode/Application.java` ```java package com.zetcode; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` `Application`是設置 Spring Boot 應用的入口。 ## Spring Boot `@ConfigurationProperties`示例 II 在第二個應用中,我們還將驗證屬性。 ```java pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ │ Application.java │ │ │ MyRunner.java │ │ └───config │ │ MailProperties.java │ └───resources │ application.properties │ mail.properties └───test └───java ``` 這是項目結構。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>springbootconfigurationpropertiesvalidation</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` 這是`pom.xml`文件。 我們還有一個`hibernate-validator`依賴項。 `resources/application.properties` ```java spring.main.banner-mode=off ``` 這是`application.properties`文件。 `resources/mail.properties` ```java hostname=info@example.com port=9000 from=admin@example.com recipients[0]=user1@example.com recipients[1]=user2@example.com recipients[2]=user3@example.com recipients[3]=user4@example.com ``` 我們有一個自定義的`mail.properties`文件。 `com/zetcode/config/MailProperties.java` ```java package com.zetcode.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.validation.annotation.Validated; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import java.util.List; @Configuration @PropertySource("classpath:mail.properties") @ConfigurationProperties @Validated public class MailProperties { @NotNull private String hostname; @Min(1000) @Max(10000) private int port; @NotNull private String from; @NotNull private List<String> recipients; public String getHostname() { return hostname; } public void setHostname(String hostname) { this.hostname = hostname; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public List<String> getRecipients() { return recipients; } public void setRecipients(List<String> recipients) { this.recipients = recipients; } } ``` 我們使用`@PropertySource`注解設置自定義屬性文件的路徑。 `@Validated`注解驗證屬性。 `com/zetcode/MyRunner.java` ```java package com.zetcode; import com.zetcode.config.MailProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class MyRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(Application.class); @Autowired private MailProperties mailProperties; @Override public void run(String... args) throws Exception { logger.info("Hostname: {}", mailProperties.getHostname()); logger.info("Port: {}", mailProperties.getPort()); logger.info("From: {}", mailProperties.getFrom()); logger.info("Recipients: {}", mailProperties.getRecipients()); } } ``` 我們注入`MailProperties`并以`run()`方法讀取它們。 `com/zetcode/Application.java` ```java package com.zetcode; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 這是`Application`類。 我們使用`mvn -q spring-boot:run`運行該應用。 在本教程中,我們展示了如何使用`@ConfigurationProperties`從外部文件讀取配置屬性。 您可能也對相關教程感興趣: [Spring `PropertySource`教程](/spring/propertysource/), [Spring Boot `CommandLineRunner`教程](/springboot/commandlinerunner/), [Java 教程](/lang/java/)或列出[所有 Spring Boot 教程](/all/#springboot)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看