Spring JavaMailSender - 更改密码?

时间:2014-03-07 13:13:28

标签: spring passwords javamail

我在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界面编辑密码,或从数据库设置值?

1 个答案:

答案 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使用从数据库中获取的用户名/密码值。运行时。