如何在 Spring 引导应用程序中使用配置 (properties/yml) 文件中的属性?
How can I use properties from a configuration (properties/yml) file in my Spring Boot application?
如何在我的 Spring 应用程序中使用外部配置?
package hello.example2.Container
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.client.RestTemplate
@RestController
class ContainerController {
@RequestMapping("/container/{cid}")
public list(@PathVariable Integer cid) {
def template = new RestTemplate();
def container = template.getForObject("http://localhost:5050/container/" + cid.toString(), Container);
return container;
}
}
我想用配置选项替换“http://localhost:5050”(f.e。application.yml 或 application.properties)。
这是我的申请文件(Groovy):
package hello.example2
import groovy.transform.CompileStatic
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.annotation.Configuration
@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@CompileStatic
class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我尝试设置“@Configuration”和“@EnableAutoConfiguration”,但老实说我不知道它们在做什么。我是 Java/Groovy 和 Spring 框架的新手(但不是一般编程)。
我已阅读这些页面,但没有完整的示例,只有片段:
[2]https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
在您的配置文件(application.yml 或 application.properties)中添加一个新条目:
endpointUrl: http://localhost:5050
然后将 属性 注入你的控制器:
@RestController
class ContainerController {
@Value("${endpointUrl}")
private String ednpointUrl;
@RequestMapping("/container/{cid}")
public list(@PathVariable Integer cid) {
def template = new RestTemplate();
def container = template.getForObject(endpointUrl+"/container/" + cid.toString(), Container);
return container;
}
}
虽然上面回答了你的问题。我不太相信这一点。
让我一一阐述:
@Configuration
:您可以通过两种方式设置 spring 配置。
a) 使用 xml 文件。
b) 并使用 Java 配置 class.
要使用 Java class 作为 spring 的配置文件,您需要添加 @Configuration
注释。在此配置 class 中,现在您可以使用 @Bean 标记指定 bean。使用 @Scope
注释将范围指定为 singleton or prototype
。以及使用 xml 配置文件可以做的一切。
此外,广大社区不喜欢将 xml 用于配置,因此,他们更喜欢在 java class 中配置 spring。
@EnableAutoConfiguration
:来自springboot
框架。它会自动配置常规或预期的配置,这些配置以后可能会被覆盖。基本上,它明智地配置默认所需的默认 beans,使用不同的 java 配置 classes 来实现不同的默认配置。
Regarding externalising configuration
:您可以将配置外部化到 application.properties 或 application.yml。以下应该是位置。
- 当前目录的 /config 子目录。
- 当前目录
- 一个class路径/配置包
- class路径根
以上按先后顺序排列。因此,如果配置目录存在于当前项目目录下。它的优先级最高。
下面我添加了我的应用程序的树状图。可能有帮助。
vinayprajapati@localhost:~/Desktop/project/gradleSpringBoot$ tree
.
├── build.gradle
├── gradleSpringBoot.iml
└── src
├── main
│ ├── groovy
│ │ └── org.test
│ │ ├── components
│ │ │ └── TestComponent.groovy
│ │ ├── configuration
│ │ │ └── BaseConfiguration.groovy
│ │ |
│ │ └── utils
│ │ ├── AppConfig.groovy
│ │ └── AppInfo.groovy
│ ├── java
│ │ └── org
│ │ └── test
│ │ ├── GradleSpringBootApplication.java
│ │ └── HelloController.java
│ └── resources
│ ├── application-qa.yml
│ ├── application-uat.yml
│ ├── application.properties
│ ├── application.yml
│ ├── static
│ └── templates
└── test
└── java
└── org
└── test
└── GradleSpringBootApplicationTests.java
您似乎遇到了故障排除问题。
让我们做一件事。将配置文件放在上面树图中的资源中,并从项目的所有其他地方删除它。这样做的原因是根目录或 /config 子目录中的任何配置文件具有更高的优先级,因此会覆盖 classpath.
中的配置
如何在我的 Spring 应用程序中使用外部配置?
package hello.example2.Container
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.client.RestTemplate
@RestController
class ContainerController {
@RequestMapping("/container/{cid}")
public list(@PathVariable Integer cid) {
def template = new RestTemplate();
def container = template.getForObject("http://localhost:5050/container/" + cid.toString(), Container);
return container;
}
}
我想用配置选项替换“http://localhost:5050”(f.e。application.yml 或 application.properties)。
这是我的申请文件(Groovy):
package hello.example2
import groovy.transform.CompileStatic
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.annotation.Configuration
@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@CompileStatic
class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我尝试设置“@Configuration”和“@EnableAutoConfiguration”,但老实说我不知道它们在做什么。我是 Java/Groovy 和 Spring 框架的新手(但不是一般编程)。
我已阅读这些页面,但没有完整的示例,只有片段:
[2]https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
在您的配置文件(application.yml 或 application.properties)中添加一个新条目:
endpointUrl: http://localhost:5050
然后将 属性 注入你的控制器:
@RestController
class ContainerController {
@Value("${endpointUrl}")
private String ednpointUrl;
@RequestMapping("/container/{cid}")
public list(@PathVariable Integer cid) {
def template = new RestTemplate();
def container = template.getForObject(endpointUrl+"/container/" + cid.toString(), Container);
return container;
}
}
虽然上面回答了你的问题。我不太相信这一点。 让我一一阐述:
@Configuration
:您可以通过两种方式设置 spring 配置。
a) 使用 xml 文件。
b) 并使用 Java 配置 class.
要使用 Java class 作为 spring 的配置文件,您需要添加 @Configuration
注释。在此配置 class 中,现在您可以使用 @Bean 标记指定 bean。使用 @Scope
注释将范围指定为 singleton or prototype
。以及使用 xml 配置文件可以做的一切。
此外,广大社区不喜欢将 xml 用于配置,因此,他们更喜欢在 java class 中配置 spring。
@EnableAutoConfiguration
:来自springboot
框架。它会自动配置常规或预期的配置,这些配置以后可能会被覆盖。基本上,它明智地配置默认所需的默认 beans,使用不同的 java 配置 classes 来实现不同的默认配置。
Regarding externalising configuration
:您可以将配置外部化到 application.properties 或 application.yml。以下应该是位置。
- 当前目录的 /config 子目录。
- 当前目录
- 一个class路径/配置包
- class路径根
以上按先后顺序排列。因此,如果配置目录存在于当前项目目录下。它的优先级最高。
下面我添加了我的应用程序的树状图。可能有帮助。
vinayprajapati@localhost:~/Desktop/project/gradleSpringBoot$ tree
.
├── build.gradle
├── gradleSpringBoot.iml
└── src
├── main
│ ├── groovy
│ │ └── org.test
│ │ ├── components
│ │ │ └── TestComponent.groovy
│ │ ├── configuration
│ │ │ └── BaseConfiguration.groovy
│ │ |
│ │ └── utils
│ │ ├── AppConfig.groovy
│ │ └── AppInfo.groovy
│ ├── java
│ │ └── org
│ │ └── test
│ │ ├── GradleSpringBootApplication.java
│ │ └── HelloController.java
│ └── resources
│ ├── application-qa.yml
│ ├── application-uat.yml
│ ├── application.properties
│ ├── application.yml
│ ├── static
│ └── templates
└── test
└── java
└── org
└── test
└── GradleSpringBootApplicationTests.java
您似乎遇到了故障排除问题。
让我们做一件事。将配置文件放在上面树图中的资源中,并从项目的所有其他地方删除它。这样做的原因是根目录或 /config 子目录中的任何配置文件具有更高的优先级,因此会覆盖 classpath.
中的配置