簡體   English   中英

如何在春季初始化應用程序?

[英]How to Initialize the application in spring?

現在直接來到我的觀點,

JSP我會做我的應用程序的初始化過程,比如

<%! public void jsp_init(){

      //Initialise the domain server to create protocol
      //Create the logging file
}%>

現在我將重建我之前從ServletsSpring 3.2應用程序。

我怎么能用Spring 3.2做到這一點?

我的colleague說我initialization with Constructor of the Spring Controller

因為我在applicationContext.xmlcontroller class創建了bean,所以我在web.xml使用ContextLoadListner加載applicationContext.xml文件。

這是正確的初始化方式嗎?

春天的ApplicationListener怎么樣?

哪個是在spring 3.2初始化應用程序的最佳方法?

希望我們的堆棧用戶能給出一個好的解決方案

如果配置正確,Spring會為您做很多事情。 如果你真的需要執行代碼(vs使用像Log4J那樣自動配置的東西),我建議注冊一個InitializingBean並覆蓋afterPropertiesSet 然后,您可以將此bean定義添加到applicationContext.xml文件中:

<bean id="initializer" class="com.myproject.MyInitializer" />

因此,當應用程序完全初始化時,Spring將調用MyInitializer.afterPropertiesSet()方法。 您也可以在已經向應用程序上下文注冊的bean上使用@PostConstruct注釋,但是無法保證在調用該方法時將初始化其余的應用程序。 如果您希望在設置完所有內容后運行它,則可以使用Initializing Bean方法。 我已經使用這種策略來啟動一個服務器套接字等,它需要獨立於Web請求生命周期運行。

你為什么要自己初始化spring應用程序? Spring將自動為您執行:這是您告訴服務器初始化spring的方法:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/app.xml</param-value>
  </context-param>

  <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>

這將在部署期間發生,並且定義所有bean將被初始化(取決於懶惰)。 如果你真的想在初始化bean之后做一些事情,那么在使用之前然后使用InitializingBean Example

MyBean implements InitializingBean{
   afterPropertiesSet() {

      //do here
   }

}

ContextLoaderListener是一種啟動Spring的WebApplicationContext的引導程序,而ApplicationListener更多地處於Java應用程序級別本身而不是Web應用程序上下文。

ContextLoaderListener是一個很棒的標准工具,用於應用程序的上下文化,如果它有多個DispatcherServlet或一些servlet / servlet過濾器映射到不同的服務。 基本上,為這些應用程序的不同servlet提供監聽器是很方便的,這樣你就可以進行細粒度的語境化。

我不知道你正在構建的應用程序的性質,但我認為你現在正在嘗試一些基本的東西。 如果是這種情況,即使在設置更復雜的情況下,最好在啟動時加載一個控制器來處理主要的初始化例程,包括上下文化。 你可以在web.xml中使用你擁有的控制器bean:

<servlet>
    <servlet-name>your-servlet</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

每當您讀取某個url模式時,也可以映射和調用此servelt

@RequestMapping("/welcome")         
    public ModelAndView helloWorld() 

在Web部署描述符中,這一點就像您將servlet映射到Spring Security等其他Spring服務:

<servlet-mapping>
    <servlet-name>crunchify</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

因此,您實際上不需要使用控制器的構造函數,也不需要使用ContextLoaderListener或其他偵聽器來執行簡單的初始化任務。 不過,在擴展應用程序時,學習它們的用例非常方便。

在這里閱讀有關調度程序servlet的更多信息:

http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/DispatcherServlet.html

您可以通過使用帶有@PostConstruct的bean並在spring中注入servlet-config來實現此目的。 看看這里的代碼和底部的一行。

<beans:bean id="PlayerImportDaoImpl"
        class="com.footieview.app.importer.dao.PlayerImportDaoImpl" />

這將在啟動時注入此bean,此bean上的方法具有注釋@PostConstruct - 這意味着在啟動時會調用此方法。

創建一個Spring 3 MVC應用程序,您不需要這樣做!

Spring MVC支持JSP,您可以通過Annotations進行所有配置

有關示例,請參見http://fruzenshtein.com/spring-mvc-creation-of-simple-controller-with-java-based-config/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM