配置文件内容application.yml:
server:
port: 9001
@Value(" ${server.port}"):读取配置文件中server.port的属性值
//交给spring管理
@Component
public class Property1 {
@Value("${server.port}")
private Integer port;
@Autowired
public void test3(){
//9001
System.out.println("port = " + port);
}
}
若配置文件中没有server.port属性,可通过 @Value(" ${server.port:8080}")赋默认值
//交给spring管理
@Component
public class Property1 {
@Value("${server.port2:8080}")
private Integer port;
@Autowired
public void test3(){
//8080-->由于配置文件没有server.port2属性,所以取默认值
System.out.println("port = " + port);
}
}
若成员属性被static修饰,不能通过在属性加注解的方式赋值
//交给spring管理
@Component
public class Property1 {
@Value("${server.port}")
private static Integer port;
@Autowired
public void test3(){
//null 因为port被static修饰
System.out.println("port = " + port);
}
}
解决方案有2种:
方法1:
//交给spring管理
@Component
public class Property1 {
private static Integer port;
/**
* 可以在程序启动时被扫描
*/
@Value("${server.port}")
public void getPort(Integer port1){
System.out.println("11111111111111");
Property1.port=port1;
}
}
方法2:
//交给spring管理
@Component
public class Property1 {
private static Integer port;
@Value("${server.port}")
private Integer port;
/**
* 可以在程序启动时被扫描
*/
@Autowired
public void getPort(){
System.out.println("11111111111111");
Property1.port=this.port;
}
}