我在Spring中实现了一个JavaMailSender bean。我的豆子看起来如此:
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com"></property>
<property name="port" value="587"></property>
<property name="username" value=""></property>
<property name="password" value=""></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.ssl.trust">smtp.gmail.com</prop>
</props>
</property>
</bean>
</beans>
一切正常,所以没有问题。有人提出了一个有趣的观点。如果有人登录Gmail并更改密码怎么办?有没有办法从Web界面编辑密码,或从数据库设置值?
答案 0 :(得分:1)
您可以做的是从属性文件加载用户名和属性,并使用该文件中的属性初始化bean?因此,当密码更改时,您更改属性文件而不是bean定义。
以下是示例代码:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>
classpath:mail.properties
</value>
</list>
</property>
</bean>
您的mail.properties
文件
username=abc
password=abc
您的bean定义
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com"></property>
<property name="port" value="587"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.ssl.trust">smtp.gmail.com</prop>
</props>
</property>
</bean>
</beans>
如果您要将密码存储在数据库中并从Web应用程序进行编辑,则必须构建该Web应用程序,然后使JavaMailSenderImpl
使用从数据库中获取的用户名/密码值。运行时。