使用@PropertySource读取配置文件通过@Value进行参数注入,是一个常见的spring注入配置方式。下面是详细讲解的攻略。
步骤一:创建配置文件
首先创建一个名为“application.yml”的配置文件,并写入相关的配置信息。例如:
server:
port: 8080
context-path: /myApp
步骤二:创建配置类
创建一个名为“AppConfig”的配置类,并在类上使用注解@PropertySources来指定要读取的配置文件,然后在类中使用注解@Value来注入配置信息。
示例:
@Configuration
@PropertySources(
// 指定要读取的配置文件
@PropertySource(value = "classpath:application.yml", encoding = "UTF-8")
)
public class AppConfig {
@Value("${server.port}")
private int port;
@Value("${server.context-path}")
private String contextPath;
@Bean
public MyServer myServer() {
MyServer server = new MyServer();
server.setPort(port);
server.setContextPath(contextPath);
return server;
}
}
在配置类中,通过使用@Value注解来注入配置信息,${key}中的key表示在配置文件中的配置项名称,可以使用.来表示层级关系。
步骤三:使用配置信息
在需要使用配置信息的地方注入上述创建的配置类即可。
示例:
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(MyApp.class, args);
MyServer myServer = context.getBean(MyServer.class);
myServer.start();
}
}
在main方法中,通过使用SpringApplication.run来启动Spring应用程序,然后通过context.getBean来获取MyServer类的实例,从而获取到配置的server信息。
示例一:使用多个配置文件
如果需要使用多个配置文件,则在@PropertySources注解中指定多个@PropertySource。
示例:
@Configuration
@PropertySources({
@PropertySource(value = "classpath:application.yml", encoding = "UTF-8"),
@PropertySource(value = "classpath:custom.yml", encoding = "UTF-8")
})
public class AppConfig2 {
@Value("${server.port}")
private int port;
@Value("${server.context-path}")
private String contextPath;
@Value("${custom.key}")
private String customKey;
@Bean
public MyServer myServer() {
MyServer server = new MyServer();
server.setPort(port);
server.setContextPath(contextPath);
return server;
}
@Bean
public CustomBean customBean() {
CustomBean bean = new CustomBean();
bean.setKey(customKey);
return bean;
}
}
上述示例中,除了读取application.yml中的配置外,还读取了custom.yml中的配置。
示例二:使用属性占位符
在配置文件中也可以使用属性占位符来引用其他配置项的值。
示例:
my:
value: "hello ${name}"
name: "world"
在上述示例中,my.value的值使用了$name占位符,它将会被my.name的实际值替换。
在@Configuration类中,注入my.value的值即可。例如:
@Configuration
@PropertySource(value = "classpath:config.yml", encoding = "UTF-8")
public class AppConfig3 {
@Value("${my.value}")
private String myValue;
@Bean
public MyBean myBean() {
MyBean bean = new MyBean();
bean.setValue(myValue);
return bean;
}
}
上述示例中,MyBean类已经定义了value字段,并需要通过@Bean的方式注入到Spring容器中。
这里将config.yml配置文件的my.value值注入到MyBean的value字段中,使用了@Value注解,并指定了${my.value}占位符来获取配置文件中的值。
这就是使用@PropertySource读取配置文件通过@Value进行参数注入的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用@PropertySource读取配置文件通过@Value进行参数注入 - Python技术站