1.在web.xml里面配置java
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
ContextLoaderListener的做用就是启动Web容器时,自动装配ApplicationContext的配置信息。web
由于它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。spring
ContextLoaderListener启动的上下文为根上下文,DispatcherServlet所建立的上下文的的父上下文即为此根上下文,可在FrameworkServlet中的initWebApplicationContext中看出。sql
1.方式1:app
package com.xp; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; public class MyServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); System.out.println(context); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } }
Spring Junit4 获取Beanide
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:/spring/applicationContext-*.xml"}) public class DataSourceTest implements ApplicationContextAware{ private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } @Test public void testDict() throws Exception { DruidDataSource dataSource = (DruidDataSource)applicationContext.getBean("slave01DataSource"); String sql = "select * from C1_1 limit 4"; PreparedStatement prepareStatement = dataSource.getConnection().prepareStatement(sql); ResultSet rs = prepareStatement.executeQuery(); while (rs.next()) { int int1 = rs.getInt("id"); String CsCode = rs.getString("CsCode"); } System.out.println(); }