java如何在Spring Boot应用程序中使用配置(properties/yml)文件中的属性?
如何在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;
}
}
我想用一个配置选项(f.e.application.yml或application.properties)替换“http://localhost:5050”
这是我的应用程序文件(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
# 1 楼答案
虽然上面回答了你的问题。我不太相信这一点。 让我逐一阐述:
@Configuration
:可以通过两种方式设置spring配置。 a) 使用xml文件。 b) 并使用Java配置类要使用Java类作为spring的配置文件,需要添加
@Configuration
注释。在这个配置类中,现在可以使用@Bean标记指定Bean。使用@Scope
注释将作用域指定为singleton or prototype
。以及使用xml配置文件可以执行的所有操作此外,广泛的社区不喜欢将XML用于配置,因此,他们更喜欢在java类中配置spring
@EnableAutoConfiguration
:来自springboot
框架。它会自动配置传统的或预期的配置,这些配置稍后可能会被覆盖。基本上,它使用不同的java配置类为不同的默认配置明智地配置默认所需的默认beanRegarding externalising configuration
:您可以将配置外部化到应用程序。属性或应用程序。yml。以下应该是位置以上各项按其优先顺序排列。因此,如果当前项目目录下存在配置目录。它将具有最高的优先级
下面我添加了我的应用程序的树形图。也许这有帮助
看起来您遇到了故障排除问题
让我们做一件事。将配置文件放在资源中,就像上面的树形图一样,并从项目中的所有其他位置删除该配置文件。这样做的原因是根目录或/config子目录中的任何配置文件都具有更高的优先级,因此会覆盖类路径中的config
# 2 楼答案
在配置文件(application.yml或application.properties)中添加新条目:
然后将该属性注入控制器: