Spring MVC是否在启动时初始化所有控制器?

时间:2013-08-07 07:10:15

标签: java spring spring-mvc collections controllers

美好的一天的人。现在在我的Web应用程序中,我使用了很多列表,这些列表必须是我的应用程序的sessionAttributes。所有这些都存储在一个控制器中:

@Controller
@SessionAttributes({"institutionAttributes", "institutionTypeAttributes", "formDateAttributes", 
                        "formDescriptionAttributes", "deleteAttributesDescription", "deleteAttributesInstitution", "deleteAttributesDate"})
public class MainController {


    List<InstitutionInForm> listOfInstitutionsAttributes = new ArrayList<InstitutionInForm>();
    List<InstitutionTypeInForm> listOfInstitutionTypesAttributes = new ArrayList<InstitutionTypeInForm>();
    List<FormDate> listOfFormDateAttributes = new ArrayList<FormDate>();
    List<FormDescription> listOfFormDescriptionsAttributes = new ArrayList<FormDescription>();


    List<FormDescription> listOfFormDescriptionsDeleteAttributes = new ArrayList<FormDescription>();
    List<InstitutionInForm> listOfInstitutionDeleteAttributes = new ArrayList<InstitutionInForm>();
    List<FormDate> listOfDatesDeleteAttributes = new ArrayList<FormDate>();

//other methods omitted

这些列表中的每一个都将初始化为初始值10,并且还需要一些内存。 我决定通过分离控制器来分离它们。

所以,我问它是如何在启动我的应用程序时初始化控制器,或者当DispatcherServlet将从用户获得请求时,在用所有列表初始化它们之后找到一个合适的控制器。???

如何防止控制器和列表等当前不需要初始化?

谢谢开发人员。良好的生产编码日。

1 个答案:

答案 0 :(得分:3)

您可以使用@Lazy来阻止控制器bean的加载/初始化 一旦第一个请求到来,这将被实例化。

@Lazy
@Controller
public class MainController { ...}