㈠ 单元测试怎么加载spring的配置文件
ApplicationContext获取上下文。 (1)在java文件中:主要用于jUnit测试1导包:2importorg.springframework.context.ApplicationContext;3importorg.springframework.context.support.;4获取bean:5ApplicationCo
㈡ Spring载入多个配置文件加载顺序是怎么样的
这个顺序不需要关心吧? Spring是先加载配置文件,然后更加配置文件再初始化相应的类 比如你在B配置文件中声明了一个BeanA 在A配置文件中用到了这个BeanA,Spring 不会由于配置文件加载顺序的问题而造成找不到BeanA的错误的。
㈢ Spring加载配置文件(org.springframework.beans.factory.BeanDefinitionStoreException)
1、首先手动加载Spring配置文件有两个类,分别是;两个类的区别。
㈣ spring中如何加载多个配置文件
Spring加载多个配置文件的方式1.第一种,使用数组代码ApplicationContextcontex=newClassXmlApplicationContext(newString["a1.xml","a2.xml"]);2.第二种,只用通配符代码版ApplicationContextcontex=newClassXmlApplicationContext("a*.xml");//但此种方法只对文件系权统中的xml文件有效,针对jar包中的无效3.第三种,引入代码ApplicationContextcontex=newClassXmlApplicationContext("a1.xml");//在a1.xml中<importresource="a2.xml"///执行resource路径为相对a1.xml的路径
㈤ spring如何自动加载配置文件
Spring只提供了应用上下文的 refresh 方法,但是没有提供配置文件的监听功能,你需要自己实现监听。实现的方式有很多种,比如自己实现使用定时器去轮询检查文件是否有修改,或者使用quartz提供的文件监听Job。如果你是用的是JDK7,就更加容易了,java.nio.file包下提供了相应的接口可以监测到文件更新(具体的可以去搜索 WatchService 接口说明)。无论你使用哪种方式监测到 spring 的配置文件发生了变更,只需要简单的调用一下 ApplicationContext#refresh 方法即可。
㈥ Spring如何加载变化的配置文件
配置文件名为:project.properties,内容如下:# 是否开启逻辑删除del.filter.on=falsedomain=http://www.366go.cn/修改Spring配置文件之前代码:<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:dbinfo.properties</value> </list> </property></bean>修改后的配置文件<bean id="propertyConfigurer" class="com.hisun.core.util."> <property name="locations"> <list> <value>classpath:dbinfo.properties</value> <value>classpath:project.properties</value> </list> </property></bean>加入了classpath:project.properties,其为自定义的配置文件将PropertyPlaceholderConfigurer类修改为自定义类,PropertyPlaceholderConfigurer类的具体作用可以查资料这块儿不做详细介绍定义类类的具体内容为下,import java.util.HashMap;import java.util.Map;import java.util.Properties; import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.;import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; public class extends PropertyPlaceholderConfigurer { private static Map ctxPropertiesMap; @Override protected void processProperties( beanFactoryToProcess, Properties props) throws BeansException { super.processProperties(beanFactoryToProcess, props); ctxPropertiesMap = new HashMap(); for (Object key : props.keySet()) { String keyStr = key.toString(); String value = props.getProperty(keyStr); ctxPropertiesMap.put(keyStr, value); } } public static Object getContextProperty(String name) { return ctxPropertiesMap.get(name); }}定义获取配置文件中值的类SpringPropertiesUtil类的具体内容如下:import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component; /** * Spring-PropertiesUtil工具类 -获取属性值 * */@Componentpublic class SpringPropertiesUtil implements ApplicationContextAware { public static final String KEY = "propertyConfigurer"; private static ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringPropertiesUtil.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 获取配置文件中的内容 * * @param keyName * @return */ public static String parseStr(String keyName) { cp = () applicationContext .getBean(KEY); return cp.getContextProperty(keyName).toString(); } /** * 获取配置文件中的内容 * * @param keyName * @return */ public static int parseInt(String keyName) { cp = () applicationContext .getBean(KEY); return Integer.parseInt(cp.getContextProperty(keyName).toString()); } /** * 获取配置文件中的内容 * * @param keyName * @return */ public static double parseDouble(String keyName) { cp = () applicationContext .getBean(KEY); return Double.parseDouble(cp.getContextProperty(keyName).toString()); }}这样,在项目当中就能够方便快速的获取properties文件中配置的参数如SpringPropertiesUtil.parseStr(“content”)
㈦ spring是怎样加载配置
新建一个测试类,继承自PropertyPlaceholderConfigurerspring自定义加载配置文件2重载loadProperties方法,我们的核心代码就在这个函数里实现spring自定义加载配置文件3新建四个properties文件,里面存放不同的开发环境所需要的不同的参数值spring自定义加载配置文件spring自定义加载配置文件spring自定义加载配置文件spring自定义加载配置文件spring自定义加载配置文件4好了,之后就是编写我们的核心程序逻辑,根据不同的环境加载不同的配置文件spring自定义加载配置文件5之后我们要将我们的这个测试类加入spring的配置文件中spring自定义加载配置文件6现在开始编写测试程序运行,运行时需要给定运行时参数,以标识当前运行环境,-Dspring.profiles.active=test,需要什么环境就运行给定什么值spring自定义加载配置文件spring自定义加载配置文件7最后,我们看一下运行结果吧spring自定义加载配置文件
㈧ 如何在Spring容器中加载自定义的配置文件
自定义配置文件配置文件名为:project.properties,内容如下:[html] view plain # 是否开启逻辑删除 project_del.filter.on=false project_domain=修改Spring配置文件之前代码:[html] view plain <beanidbeanid="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <propertynamepropertyname="locations"> <list> <value>classpath:dbinfo.properties</value> </list> </property> </bean> 修改后的配置文件[html] view plain <beanidbeanid="propertyConfigurer" class="com.hisun.core.util."> <propertynamepropertyname="locations"> <list> <value>classpath:dbinfo.properties</value> <value>classpath:project.properties</value> </list> </property> </bean> 加入了classpath:project.properties,其为自定义的配置文件将PropertyPlaceholderConfigurer类修改为自定义类,PropertyPlaceholderConfigurer类的具体作用可以查资料这块儿不做详细介绍注意下:这个configurer类获取的是所有properties的属性map,如果希望处理某个properties文件,需要在properties中做一个命名区别,然后在加载的时候,根据key的前缀,进行获取。定义类类的具体内容为下,[java] view plain importjava.util.HashMap; importjava.util.Map; importjava.util.Properties; importorg.springframework.beans.BeansException; importorg.springframework.beans.factory.config.; importorg.springframework.beans.factory.config.PropertyPlaceholderConfigurer; publicclass { privatestatic Map ctxPropertiesMap; @Override protectedvoid processProperties( beanFactoryToProcess, Properties props)throws BeansException { super.processProperties(beanFactoryToProcess, props); ctxPropertiesMap =new HashMap(); for(Object key : props.keySet()) { String keyStr = key.toString(); if(keyStr.startsWith("project_")){ String value = props.getProperty(keyStr); ctxPropertiesMap.put(keyStr, value); } } } publicstatic Object getContextProperty(String name) { returnctxPropertiesMap.get(name); } } 定义获取配置文件中值的类SpringPropertiesUtil类的具体内容如下:[java] view plain importorg.springframework.beans.BeansException; importorg.springframework.context.ApplicationContext; importorg.springframework.context.ApplicationContextAware; importorg.springframework.stereotype.Component; /** * Spring-PropertiesUtil工具类 -获取属性值 * */ @Component publicclass SpringPropertiesUtil { publicstatic final String KEY = "propertyConfigurer"; privatestatic ApplicationContext applicationContext; publicvoid setApplicationContext(ApplicationContext applicationContext) throwsBeansException { SpringPropertiesUtil.applicationContext = applicationContext; } publicstatic ApplicationContext getApplicationContext() { returnapplicationContext; } /** * 获取配置文件中的内容 * * @param keyName * @return */ publicstatic String parseStr(String keyName) { cp = () applicationContext .getBean(KEY); returncp.getContextProperty(keyName).toString(); } /** * 获取配置文件中的内容 * * @param keyName * @return */ publicstatic int parseInt(String keyName) { cp = () applicationContext .getBean(KEY); returnInteger.parseInt(cp.getContextProperty(keyName).toString()); } /** * 获取配置文件中的内容 * * @param keyName * @return */ publicstatic double parseDouble(String keyName) { cp = () applicationContext .getBean(KEY); returnDouble.parseDouble(cp.getContextProperty(keyName).toString()); } } 这样,在项目当中就能够方便快速的获取properties文件中配置的参数如SpringPropertiesUtil.parseStr(“content”)
㈨ springboot怎么加载配置文件
Spring文件进行别配置其servlet-name没指定init-param属性系统自寻找spring配置文件[servlet-name]-servlet.xml需要载入回spring相关配置文件首先答加载ContextLoaderListener类再指定context-param指定spring配置文件使用逗号别隔各文件使用便配置文件进行MVC式解配置控制器Bean配置文件放置xml文件serverBean放service.xml文件
㈩ spring如何动态加载配置文件,就是配置文件修改了,application.xml如何能读取到
项目,需要访问多个数据库,而且需要在服务器运行不重新启动的情况下,动态的修改spring中配置的数据源datasource,在网上找了很多资料,最后找到了适合我的方法,下面总结一下。 spring的配置文件是在容器启动的时候就加载到内存中的,如果手动改了application.xml,我们必须要重新启动服务器配置文件才会生效。而在spring中提供了一个类WebApplicationContext,这个类可以让你获得一些bean,可以修改内存中的信息,我就是通过这个类来实现的。下面是我具体的代码。 package com.southdigital.hospital; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.mchange.v2.c3p0.ComboPooledDataSource; public class ChangeSpringConfig extends HttpServlet { private String ipAddress = "127.0.0.1"; /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //先取得servleContext对象,提供给spring的WebApplicationUtils来动态修改applicationContext.xml ipAddress = request.getParameter("ipAddress"); System.out.println(ipAddress); ServletContext servletContext = this.getServletContext(); WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext); ComboPooledDataSource cpds = (ComboPooledDataSource) applicationContext.getBean("dataSource"); cpds.setJdbcUrl("jdbc:mysql://"+ipAddress+":3306/ssh"); } } 注意:通过这种方法修改applicationContext.xml文件的时候用c3p0,而不可以用dbcp,dbcp不支持动态修改读取到内存里面的数据。spring 3.1已经支持了。