2017-05-31 118 views
2

我有兩個類都使用配置屬性。Spring @Value不加載屬性

這一個負載

package com.cegeka.campus; 

@RestController 
@RequestMapping("api/outlook") 
public class OutlookController 
{ 
    @Value("${frontend.url}") 
    private String frontendUrl; 
    ..... 
} 

但是這一次空返回:

package com.cegeka.campus; 

public class AuthHelper 
{ 
    @Value("${backend.authorize.url}") 
    private static String redirectUrl; 
    ... 
} 

主類看起來是這樣的:

@SpringBootApplication 
@ComponentScan("com.cegeka.campus") 
@EnableJpaRepositories("com.cegeka.campus") 
@EntityScan("com.cegeka.campus") 
public class CampusApplication extends SpringBootServletInitializer 
{ 
    public static void main(String[] args) 
    { 
     SpringApplication.run(CampusApplication.class, args); 
    } 
} 

爲什麼我不能加載backend.authorize .URL? @Value根本不會注入。

屬性文件(application.yml)看起來是這樣的:

frontend: 
    url: http://hi02549:8080/courseka 
backend: 
    authorize: 
    url: http://hi02549:8080/campus/api/outlook/authorize 

回答

2

我可以看到在類化AuthHelper兩個問題:

  1. AuthHelper應該是一個Spring管理bean並且有@Component註解。

  2. 字段redirectUrl是靜態的,不能注入。解決方法是,讓現場的非靜態或

private static String redirectUrl; 

@Value("${backend.authorize.url}") 
public void setRedirectUrl(String url) { 
    redirectUrl = url; 
} 
+0

你的先生,是英雄。 –

0

添加這個方法,然後再試一次:

@Bean 
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { 
return new PropertySourcesPlaceholderConfigurer(); 
} 
+0

已歷經了某個地方,不會做的伎倆 –