在Spring @Configuration

时间:2015-04-23 00:55:21

标签: java spring spring-annotations

我有这样的事情:

    @Configuration
    public class SpringConfigUtil {

        private static final Logger logger = Logger.getLogger(SpringConfigUtil.class);


        @Value("#{ systemProperties['activemq.username'] }") 
        private String userName;

        @Value("#{ systemProperties['activemq.password'] }") 
        private String password;

        @Value("#{ systemProperties['activemq.URL'] }") 
        private String brokerURL;

        @Value("#{ systemProperties['activemq.queueName'] }") 
        private String queueName;


         @Bean
         public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
            return new PropertySourcesPlaceholderConfigurer();

         }


        @Bean(name="producer")

        public JmsTemplate jmsTemplate() {
            JmsTemplate jmsTemplate = new JmsTemplate();
            jmsTemplate.setDefaultDestination(new ActiveMQQueue(queueName));
            jmsTemplate.setConnectionFactory(connectionFactory());
            return jmsTemplate;
        }


        @Bean
        public ActiveMQConnectionFactory connectionFactory() {
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
            activeMQConnectionFactory.setBrokerURL(brokerURL);
            activeMQConnectionFactory.setUserName(userName);
            activeMQConnectionFactory.setPassword(password);          
            return activeMQConnectionFactory;
        }
    }

工作正常。 假设我还有一个applicationContext.xml文件,它已经加载了一些bean。

如何在@Configuration中引用这些bean? 我不想再以编程方式再次创建bean,因为它们已经通过加载applicationContext.xml而创建。

让我有50多个属性。是否有更好的方式来引用它们,而不是为每个属性定义类似下面的内容?

  @Value("#{ systemProperties['activemq.URL'] }") 
    private String brokerURL;

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

  

如何在@Configuration中引用这些bean?

根据http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch06.html,请尝试:

...
@Configuration
@AnnotationDrivenConfig // enable the @Autowired annotation (??)
@ImportXml("classpath:<*path*/to/your/*>applicationContext.xml")
public class SpringConfigUtil { ...
  

让我拥有50多个属性。是否有更好的方式来引用它们,而不是为每个属性定义类似下面的内容?

没有,我可以想象:-(...你怎么能更好地访问&#34; 50多个属性,而不是&#34;通过他们的名字&#34; - &#34;通过索引&# 34;,类似阵列!?虽然某些属性可以耦合,但在一天结束时,每个属性都具有(应该具有)其特殊含义和目的 - 并且对于触摸/有线/单独配置(最佳实践)提示只是尽可能少见)