如何在 Spring Boot 中以编程方式制作 @Bean
How to make @Bean programatically in Spring Boot
我不知道如何以编程方式创建 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(){
}
}
它看起来像这样:
@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;
}
}
希望对您有所帮助;-)
假设已经为 mailSender 和 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; }
怎么样:
@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;
}
我不知道如何以编程方式创建 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(){
}
}
它看起来像这样:
@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;
}
}
希望对您有所帮助;-)
假设已经为 mailSender 和 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; }
怎么样:
@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;
}