2014-03-27 73 views
2

我已经看到,在Java文件存在与@Bean注释来声明bean的方式 我在spring-servlet.xml春季转换的XML bean为Java Bean

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="smtp.gmail.com" /> 
    <property name="port" value="25" /> 
    <property name="username" value="[email protected]" /> 
    <property name="password" value="my_password" /> 
    <property name="javaMailProperties"> 
     <props> 
      <!-- Use SMTP transport protocol --> 
      <prop key="mail.transport.protocol">smtp</prop> 
      <!-- Use SMTP-AUTH to authenticate to SMTP server --> 
      <prop key="mail.smtp.auth">true</prop> 
      <!-- Use TLS to encrypt communication with SMTP server --> 
      <prop key="mail.smtp.starttls.enable">true</prop> 
      <prop key="mail.debug">true</prop> 
     </props> 
    </property> 
</bean> 

定义了以下豆现在我想把它放与我有关于如何在Java文件中定义propertyprops劲才@Bean注释 一个Java类

我怎样才能做到这一点?

回答

1

尝试一些像这样的事情,

@Bean 
public Properties javaMailProperties(){ 
    Properties properties = new Properties(); 
    // add more properties in the same way 
    properties.put("mail.transport.protocol", "smtp"); 

    return properties; 
} 

[编辑]

@Bean 
public JavaMailSenderImpl mailSender() { 
    JavaMailSenderImpl javaMailSenderImpl = new JavaMailSenderImpl(); 
    javaMailSenderImpl.setHost("smtp.gmail.com"); 
    javaMailSenderImpl.setPort("25"); 
    javaMailSenderImpl.setUsername("[email protected]"); 
    javaMailSenderImpl.setPassword("my_password"); 
    javaMailSenderImpl.setJavaMailProperties(javaMailProperties()); 
    return javaMailSenderImpl; 
} 

public Properties javaMailProperties(){ 
    Properties properties = new Properties(); 
    // add more properties in the same way 
    properties.put("mail.transport.protocol", "smtp"); 
    properties.put("mail.smtp.auth", "true"); 
    properties.put("mail.smtp.starttls.enable", "true"); 
    properties.put("mail.debug", "true"); 
    return properties; 
} 
+0

和“道具”和“流行”?? – user2729183

+0

它是一种java.util.Property你需要给出JavaMailSenderImpl – VinayVeluri

+0

@VinayVeluri,我想你的意思'Properties'不'Property' –

2

的任何<property>是从name属性调用属性的setter方法的标签。 <props>是一个方便的标签,用于配置Properties的键/值。

这里你应该明白Spring XML配置的意思,因为在JavaConfig没有任何秘密 - 只要设定装置或任何目标类技能(例如方法链)。但在你的情况JavaMailSenderImpl是一个简单的类与一组setter。

而且我相信setJavaMailProperties要求Properties object对你来说不会是个惊喜。

换句话说:春季JavaConfig是Java和课程@Bean定义的,你可以做任何事情,你可以在任何其他的Java程序。