2016-08-17 7 views
0

プロパティファイルから読み込んでBeanを作成するために使用しているSpring構成クラスがあります。プロパティとしてBeanを挿入するためのSpring構成クラス

XMLファイル内の
import org.springframework.beans.factory.annotation.Value; 
    import org.springframework.context.annotation.Bean; 
    import org.springframework.context.annotation.Configuration; 
    import org.springframework.context.annotation.PropertySource; 

    @Configuration 
    @PropertySource("classpath:conf.properties") 
    public class ApplicationConfiguration { 

     @Value("${name}") 
     private String username; 

     @Value("${password}") 
     private String password; 

     @Value("${ethnicity}") 
     private String ethnicity; 

     @Bean 
      public Employee employee(){ 
      Employee emp = new Employee(); 
      ConfigParam configParam = new ConfigParam(); 
      configParam.setEthnicity(ethnicity); 
      emp.setConfigParam(configParam); 
      return emp; 
      } 
    } 

<property name="configParam"> 
     <bean class="com.test.config.ConfigParam"> 
      <property name="ethnicity" value="indian" /> 
     </bean> 
    </property> 

私はusernamepasswordプロパティを設定することができますが、我々はConfigParamとそのbeanを注入する必要があるためemployeeconfigParam属性を設定することができません。 employeeメソッド内にBeanを挿入する方法を教えてください。

+0

ここで、 'ConfigParam'ビーンは定義されていますか?通常は 'employee()'メソッドにパラメータとして追加しますが、それが正しい解決策であるかどうかは分かりません。 –

+0

何がうまくいかないのですか? ConfigParamとConfigParamにあなたの民族性を設定しているようです。何をもっとしたいですか? ConfigParamをBeanとして作成し、そこに民族性を直接注入することもできますが、最終結果はおそらく同じでしょう... ConfigParamにBeanとしてアクセスする必要がない場合、なぜそれを1つとして作成しますか? –

+0

ありがとうございます。私は自分のコードを更新しました。 xmlファイルに 'config'を定義し、' employee'関数の中で 'emp'にBeanを注入できるかどうかを調べるだけです。 – zilcuanu

答えて

0

configParam定義が含まれ、あなたの春のXMLコンテキストは、あなたのクラスパス(名前とフォルダは任意である)で春folder内の他の言葉で、my-spring-context.xmlと呼ばれ、resources/springフォルダ内に発見されたと仮定すると:

お使いのいつものようにあなたのemployee方法依存関係注入XMLビーンに続いて

@Configuration 
@ImportResource("classpath:spring/my-spring-context.xml") 
@PropertySource("classpath:conf.properties") 
public class ApplicationConfiguration { 
//... 
} 

@ImportResource注釈を使用して、そのXMLコンテキストファイルの意識ApplicationConfiguration設定クラス。型ではなく名前で注入する場合は、configParamの引数定義の直前に@Qualifier("myBeanName")を追加することができます。

@Bean 
    @Autowired 
    public Employee employee(ConfigParam configParam){ 
    Employee emp = new Employee(); 
    configParam.setEthnicity(ethnicity); 
    emp.setConfigParam(configParam); 
    return emp; 
    } 
関連する問題