-1

I have no idea how to create bean programatically. This is how its made in .xml configuration:

<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>

I know that it has to be something like this, but I dont know how to finish it:

@Configuration
public class MailSender {

@Bean
public JavaMailSenderImpl mailSender(){

}

@Bean
public SimpleMailMessage template(){

}

@Bean
public SimpleOrderManager orderManager(){

}

}
5er
  • 2,506
  • 7
  • 32
  • 49
  • As i understand you want to use annotations to specify beans? (not programmaticaly, not at runtime) Configuration http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Configuration.html http://stackoverflow.com/questions/317687/how-can-i-inject-a-property-value-into-a-spring-bean-which-was-configured-using http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Value.html – Vovka Sep 26 '15 at 18:37

2 Answers2

1

it take this look :

@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;
    }
}

I hope it will help you ;-)

fabien t
  • 358
  • 1
  • 9
0

Assuming suggestions already made for mailSender, and templateMessage

@Configuration public class MailSender {

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

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

how about:

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

or if you use setters on SimpleOrderManager:

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

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

    return orderManager;
}
Michael Kowalski
  • 457
  • 1
  • 3
  • 9