當前位置:首頁 » 網頁前端 » springweb初始化
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

springweb初始化

發布時間: 2023-03-03 14:25:10

⑴ 在基於spring搭建的java web應用中,是通過什麼方式觸發spring的初始化過程的

前段時間在公司做了一個項目,項目用了spring框架實現,WEB容器是Tomct 5,雖然說把項目做完了,但是一直對spring的IoC容器在web容器如何啟動和起作用的並不清楚。所以就抽時間看一下spring的源代碼,藉此了解它的原理。
我們知道,對於使用Spring的web應用,無須手動創建Spring容器,而是通過配置文件,聲明式的創建Spring容器。因此在Web應用中創建Spring容器有如下兩種方式:
1. 直接在web.xml文件中配置創建Spring容器。
2. 利用第三方MVC框架的擴展點,創建Spring容器。
其實第一種方式是更加常見。為了讓Spring容器隨Web應用的啟動而啟動,有如下兩種方式:
1. 利用ServletContextListener實現。
2. 利用load-on-startup Servlet實現。
Spring提供ServletContextListener的一個實現類ContextLoaderListener,該類可以作為Listener 使用,它會在創建時自動查找WEB-INF下的applicationContext.xml文件,因此,如果只有一個配置文件,並且文件名為applicationContext.xml,則只需在web.xml文件中增加以下配置片段就可以了。

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
如果有多個配置文件需要載入,則考慮使用<context-param...>元素來確定配置文件的文件名。ContextLoaderListener載入時,會查找名為contentConfigLocation的初始化參數。因此,配置<context-param...>時就指定參數名為contextConfigLocation。
帶多個配置文件的web.xml文件如下:

<context-param>
<param-name>contextLoaderListener</param-name>
<param-value>
WEB-INF/*.xml, classpath:spring/*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
多個配置文件之間用「,」隔開。

下面我們來看它的具體實現過程是怎樣的,首先我們從ContextLoaderListener入手,它的代碼如下:

public class ContextLoaderListener implements ServletContextListener
{

private ContextLoader contextLoader;

/**
* 這個方法就是用來初始化web application context的
*/
public void contextInitialized(ServletContextEvent event)
{
this.contextLoader = createContextLoader();
this.contextLoader.initWebApplicationContext(event.getServletContext());
}

/**
* 創建一個contextLoader.
* @return the new ContextLoader
*/
protected ContextLoader createContextLoader()
{
return new ContextLoader();
}
................

}

⑵ 沒有web.xml 怎麼初始化spring

可以使用
context = new ("classpath:*.xml");
context.getBean("beanName");
或者使用註解
@ContextConfiguration(locations = "classpath*:spring/*.xml")

⑶ 高手來啊,我的web項目spring的上下文初始化出現異常啊

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: ,看這句的提示

你看看你的sessionFactory配置對不對

⑷ web容器啟動初始化完 SpringIOC 實例化完bean 項目啟動完成,關於實例化問題

Class.forName("beanClassName"); 這個跟spring ioc木有關系了!因為這個是java語言反射的特性!就像男人就是陽性!如果你木有記錯的話應該知道Java默認一個空構造函數!就是根據這個來反射得到bean實例!
大量的框架都是使用了這個特性才支持了動態裝載一個class來完成了,對象最大化管理!但是反射消耗性能也是比較高的!
種方式是:光熱轉換(太陽能熱水器);光電轉換(太