Hi, I have found this bug in 1.8.2 and 2.0.2. I haven't seen the last version yet.
We have the following bean with scope prototype <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage" scope="prototype"> <property name="from" value="${mail.default.from}" /> </bean> Then we inject this bean to every controller where we want to send some email message. <bean id="userFormController" class="ru.icl.ios.mzioppd.webapp.controller.UserFormController"> <property name="validator" ref="beanValidator"/> <property name="formView" value="userForm"/> <property name="successView" value="redirect:users.html"/> <property name="cancelView" value="redirect:mainMenu.html"/> <property name="userManager" ref="userManager"/> <property name="roleManager" ref="roleManager"/> <property name="mailEngine" ref="mailEngine"/> <property name="message" ref="mailMessage"/> <property name="templateName" value="accountCreated.vm"/> </bean> and <bean id="passwordHintController" class="ru.icl.ios.mzioppd.webapp.controller.PasswordHintController"> <property name="userManager" ref="userManager"/> <property name="messageSource" ref="messageSource"/> <property name="mailEngine" ref="mailEngine"/> <property name="message" ref="mailMessage"/> </bean> So, the object mailMessage in the different controllers will be different too, becouse bean mailMessage has scope="prototype". But what about UserFormController in concurrent requests?? UserFormController is singleton, becouse singleton is default scope in spring with dtd 2.0. And a custom default scope isn't defined... <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" default-lazy-init="true"> Have we concurrent modification of mailMessage object??? I think that we have. Probably, we should use the following code... Or use another approach(synhronize send method or create a new message every time in controller). <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage" scope="request"> <property name="from" value="${mail.default.from}" /> <aop:scoped-proxy> </bean> P.S I'm sorry for my bad English :)) Marat Kamalov.