我在spring xml文件中有以下详细信息。现在我想将它转换为spring java config bean。
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="test" />
<property name="port" value="111" />
<property name="username" value="test@gmail.com" />
<property name="password" value="test123" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
<bean id="utilityObject" class="com.ezone.utility.TestUtility">
<property name="mailSender" ref="mailSender" />
</bean>
转换mailSender这个bean如下所示。但是如何在java配置spring bean中转换utilityObject。我是新手。
@Bean(name="mailSender",autowire=Autowire.BY_NAME)
public JavaMailSenderImpl mailConfiguration(){
JavaMailSenderImpl mail = new JavaMailSenderImpl();
mail.setHost("test");
mail.setPort(111);
mail.setUsername("test@gmail.com");
mail.setPassword("test123");
Properties javaMailProperties = new Properties();
javaMailProperties.put("mail.smtp.auth", "true");
javaMailProperties.put("mail.smtp.starttls.enable", "true");
javaMailProperties.setProperty("mail.smtp.auth", "true");
javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");
mail.setJavaMailProperties(javaMailProperties);
return mail;
}
如何定义以下bean:
<bean id="utilityObject" class="com.ezone.utility.TestUtility">
<property name="mailSender" ref="mailSender" />
</bean>
上面的bean引用了mailSender
。
答案 0 :(得分:1)
您可以在@Bean
方法上放置一个参数,该方法将被注入:
@Bean
public TestUtility utilityObject(JavaMailSender mailConfiguration) {
return new TestUtility(mailConfiguration);
}
或从@Bean
中的一个@Configuration
方法致电另一个; Spring将代理它们并确保应用单例行为:
@Bean
public TestUtility utilityObject() {
return new TestUtility(mailConfiguration());
}
我认为第一个不太神奇,但任何一种方法都应该有用。
答案 1 :(得分:0)
将@configuration用于JavaMailSenderImpl
类
参考:http://www.tutorialspoint.com/spring/spring_java_based_configuration.htm
编辑
@Bean
public TestUtility getUtilityObject() {
return new TestUtility(mailConfiguration());
}
答案 2 :(得分:0)
可以从其他方法调用使用@Bean注释的方法。 Spring为@Configuration类创建代理,而单例只创建一次。
@Bean
public TestUtility utilityObject() {
TestUtility uo = new TestUtility();
uo.setMailSender(mailConfiguration());
return uo;
}