spring 不允许/不支持把值注入到静态变量中
所以
- @Value("${jdbc.url}")
- public static String JDBC_URL;
是不会成功的,只会得到null。
如果非要使用静态,只能用非静态setter 方法注入静态变量:
- public static String JDBC_URL;
- @Value("${jdbc.url}")
- public void setJdbcUrl(String jdbcUrl) {
- JDBC_URL= jdbcUrl;
- }
如果我们使用成员变量的方式注入
@Value
(
"${jdbc.url}"
)
private String jdbcUrl;
那么我们要在Service类中写一个getJdbcUrl()方法,来让别的Controller等调用得到这个值。
如果Service类被aop代理(比如Service类中有@Transactional),那么这个
@Value()不会生效,所以,一定要将@Value()用在没有被spring代理的类上,一般就放在有@Component注解的类上