2014-03-27 105 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程序。