rob*_*mag 2 java email spring apache-commons
我想在Spring应用程序中使用apache commons-email中的HtmlEmail,所以我使用config xml如下:
<bean id="commonsEmail" class="org.apache.commons.mail.HtmlEmail">
<property name="hostName" value="smtp.example.com" />
<property name="TLS" value="true"/>
<property name="smtpPort" value="587"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
但由于smtpPort属性,我无法初始化它:
bean类的属性'smtpPort'无效[org.apache.commons.mail.HtmlEmail]:Bean属性'smtpPort'不可写或具有无效的setter方法.setter的参数类型是否与getter的返回类型匹配?
请告诉我我做错了什么?谢谢.
发生这种情况是因为该smtpPort属性不明确 - 该getSmtpPort方法返回一个String,但该setSmtpPort方法需要一个int.Spring此时会变冷,并抛出异常,说bean属性无效.
我认为这两个HtmlEmail和Spring在这里都有问题 - HtmlEmail对于糟糕的API设计,Spring是不必要的迂腐.
我推荐的解决方案之一是:
创建自己的子类HtmlEmail,定义一个新的setter方法,使用一个新的名称,该名称委托给setSmtpPort.这很快捷,但设计本身就很差.
编写 Spring FactoryBean接口的实现,它实现了实例化和配置HtmlEmail实例的工作.这比(1)更多的工作,但是更清洁的设计.
Ditch Commons完全发送电子邮件,并使用Spring自己的电子邮件抽象层.这是我推荐的选择.
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |