据我所知,@Autowired对象在应用程序启动时初始化,并且由spring处理,范围将取决于我们在bean.xml中指定的内容,并且@Autowired对象在代码中实际使用之前就可用。
我的问题在于下面的代码我希望每次调用SAController类时都应该创建一个新的SuperAdminDetailsManager对象。所以我配置范围="原型"这是正确的,以便每次调用控制器时都会创建一个新的SuperAdminDetailsManager对象。
控制器类
@Controller
public class SAController {
@Autowired
private SuperAdminDetailsManager superAdminDetailsManager;
private static final Logger logger = LoggerFactory.getLogger(SAController.class);
private ApplicationContext context = null;
@RequestMapping(value = "/sadminlogin", method = RequestMethod.GET)
public String redirectLogin(ModelMap map) {
map.addAttribute("superAdmin", new SuperAdmin());
return "sa_login";
}
public void setSuperAdminDetailsManager(
SuperAdminDetailsManager superAdminDetailsManager) {
this.superAdminDetailsManager = superAdminDetailsManager;
}
}
beans.xml配置
context = new ClassPathXmlApplicationContext("beans.xml");
<bean id="superAdminManager" class="com.serviceimpl.SuperAdminDetailsManagerImpl" scope="prototype"></bean>
当我可以使用ClassPathXmlApplicationContext获取对象时,还有一个问题我为什么需要自动装配
使用ClassPathXmlApplicationContext的对象
superAdminDetailsManager = (SuperAdminDetailsManager )context.getBean("superAdminManager");