java加载properties配置文件的几种方法
程序员文章站
2022-04-27 19:44:17
...
在我们项目开发中经常的把一些属性以properties配置文件的形式进行配置,在项目中在从配置文件中读取。这样,可以方便的对属性进行修改,而不改变编译的代码。
1.以用流读取properties配置文件
Properties prop = new Properties();
InputStream inputStream = Class.class.getResourceAsStream("config.properties");
prop.load(inputStream); // 加载属性列表
2.注解读取properties配置文件(一)
@Controller
@RequestMapping("/mail")
public class ValuePropertyController extends ApplicationController{
@Value("#{configProperties['mail.hostl']}") // @Value("${mail.host}")
private String host;
@RequestMapping
public String send(){
System.out.println(host);
return "";
}
}
applicationContext.xml
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去。在XML文件中用${key}替换指定的properties文件中的值。这样的话,只需要对properties文件进行修改,而不用对xml配置文件进行修改。使用PropertyPlaceholderConfigurer可以在XML配置文件中加入外部属性文件,当然也可以指定外部文件编码格式
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>jdbc.properties</value>
</property>
<property name="fileEncoding">
<value>UTF-8</value>
</property>
</bean>
config.properties
mail.host = ...
3.注解加载properties配置文件(二)
@Configuration
@PropertySource("classpath:config.properties")
public class RequestProperties {
@Value("${demo.username}")
private String username;
@Value("${demo.password}")
private String password;
}
4.springboot加载配置文件
properties配置文件
@Component
@ConfigurationProperties(prefix="connection")
public class ConfigProperties{
private String username;
private String password ;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在xxxApplication类中配置bean的配置文件 @SpringBootApplication
public class DemoApplication{
//...
@Resource
private ConfigProperties configProperties;
@Bean
public JavaClass javaclass (){
JavaClass javaClass = new JavaClass();
javaClass.setxxx("",configProperties.getUsername());
javaClass.setxxx("",configProperties.getPassword() );
return javaClass;
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
或在项目中,获取properties配置文件属性 @RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private ConfigProperties config;
@RequestMapping("getproper")
public String userInfo(){
String userName = config.getUsername();
return userName;
}
}
上一篇: 爆笑冷幽默,逗你笑呵呵
下一篇: 每天一个shell小知识(for)