@Autowired对象初始化和范围

时间:2014-07-08 06:41:18

标签: spring-mvc autowired

据我所知,@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");

0 个答案:

没有答案