如何在Spring Boot中以编程方式创建@Bean

时间:2015-09-26 18:19:18

标签: java spring javabeans

我不知道如何以编程方式创建bean。 这是它在.xml配置中的制作方式:

<bean id="mailSender"                         
 class="org.springframework.mail.javamail.JavaMailSenderImpl">
 <property name="host" value="mail.mycompany.com"/>
</bean>

<!-- this is a template message that we can pre-load with default state -->
<bean id="templateMessage"  
 class="org.springframework.mail.SimpleMailMessage">
 <property name="from" value="customerservice@mycompany.com"/>
 <property name="subject" value="Your order"/>
</bean>

<bean id="orderManager"
 class="com.mycompany.businessapp.support.SimpleOrderManager">
 <property name="mailSender" ref="mailSender"/>
 <property name="templateMessage" ref="templateMessage"/>
</bean>

我知道它必须是这样的,但我不知道如何完成它:

@Configuration
public class MailSender {

@Bean
public JavaMailSenderImpl mailSender(){

}

@Bean
public SimpleMailMessage template(){

}

@Bean
public SimpleOrderManager orderManager(){

}

}

2 个答案:

答案 0 :(得分:1)

它看起来像这样:

@Configuration
public class MailSender {

    @Bean
    public JavaMailSender mailSender() {
        JavaMailSenderImpl impl = new JavaMailSenderImpl();
        impl.setHost("mail.mycompany.com");
        return impl;
    }

    @Bean
    public SimpleMailMessage template() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("customerservice@mycompany.com");
        message.setSubject("Your order");
        return message;
    }
}

我希望它会对你有帮助; - )

答案 1 :(得分:0)

假设已经为mailSender和templateMessage

提出了建议
  

@Configuration public class MailSender {

     

@Bean public JavaMailSender mailSender(){       JavaMailSenderImpl impl = new JavaMailSenderImpl();       impl.setHost( “mail.mycompany.com”);       返回impl; }

     

@Bean public SimpleMailMessage templateMessage(){       SimpleMailMessage message = new SimpleMailMessage();       message.setFrom( “customerservice@mycompany.com”);       message.setSubject(“你的订单”);       回复信息; }

怎么样:

    @Bean
    public SimpleOrderManager orderManager(){
        return new SimpleOrderManager(mailSender(), templateMessage());
    }

或者如果您在SimpleOrderManager上使用setter:

@Bean
public SimpleOrderManager orderManager(){
    SimpleOrderManager orderManager = new SimpleOrderManager();

    orderManager.setMailSender(mailSender());
    orderManager.setTemplateMessage(templateMessage());

    return orderManager;
}