2017-12-10 10 views
0

注釈のみを使用してSpring Beanを作成しようとしています。私は@Beanクラスの値をプロパティファイルから読み込むことができません。ここでプロパティファイルから@BeanクラスのSpring読み込み値

は私のコードです:

私はこのプログラムを実行するときにこれが私のメインクラス

public class AnnotationDI { 

public static void main(String[] args) { 
    ApplicationContext context = new AnnotationConfigApplicationContext(ConfigurationProvider.class); 

    ApplicationProperties properties = (ApplicationProperties)context.getBean(ApplicationProperties.class); 

    System.out.println(properties); 

}} 

Configurationクラス

@Configuration 
public class ConfigurationProvider { 

private ApplicationProperties m_applicationProperties; 

@Bean 
public ApplicationProperties getApplicationProperties() { 
    return new ApplicationProperties(); 
} 
} 

Beanクラス

@PropertySource(value = { "classpath:application.properties" }) 
public class ApplicationProperties { 

@Value("${longThreadCount}") 
private String m_longProcessThread; 

@Value("${routeTimeout}") 
private String m_routeTimeout; 

@Value("${updateDirectoryPath}") 
private String m_updateDirectoryPath; 

public String getLongProcessThread() { 
    return m_longProcessThread; 
} 
@Override 
public String toString() { 
    return "ApplicationProperties [m_longProcessThread=" +m_longProcessThread"]"; 
} 
} 

ですが、私はフォローする出力

m_longProcessThread = $ {} longThreadCount

私が間違っているの何任意のアイデア?

+1

あなたはBean' @ '公共static'は' [値] @正しく解決したととして 'PropertySourcesPlaceholderConfigurer'を追加する必要があります。 –

+0

ありがとう、それは動作します。私はそれを受け入れることができるように、これを答えとして言いましょうか? –

答えて

2

プレースホルダを使用して@Valueを解決するには、PropertySourcesPlaceholderConfigurerを登録する必要があります。これはBeanFactoryPostProcessorなので、処理の早い段階で検出できるように、static Beanとして登録する必要があります。

@Bean 
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() { 
    return new PropertySourcesPlaceholderConfigurer(); 
} 
1

@PropertySourceアノテーションは、この場合、問題を解決する@Configurationアノテーションを追加

@Configuration 
@PropertySource(value = { "classpath:application.properties" }) 
public class ApplicationProperties { 
    ... 
} 

、これ等@Configuration注釈と共に使用されなければなりません。

+0

私はすでにこれを試しましたが、うまくいきません。 –

関連する問題