- 浏览: 125054 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
skill_job:
请问如何保证instance实例的线程安全?
浅谈java单例模式延迟加载 -
FLFLFLFLFLS:
很实用的,
java代码下载了,在eclipse中运行了一下 ...
针对如"123456"之类的任意字符序列,输出它们所有的排列组合 . -
FLFLFLFLFLS:
很实用的,
java代码下载了,在eclipse中运行了一下, ...
针对如"123456"之类的任意字符序列,输出它们所有的排列组合 . -
dengminghua1016:
不同古文的深远,现代的网络词语充满活力,其词意的直接和幽默将现 ...
网络经典语句 -
dengminghua1016:
古文的意境可意不可言,给人的想象空间可谓浩瀚无边···收集一些 ...
古文中惊艳的句子,绝对有你想要的!
首先在web.xml中配置监听器listener,让Spring进行自动获取。具体加入的代码如下:
只要其启动服务这个配置就会默认的去加载我们的配置文件,自动的将里面的bean都给初始化了。默认情况下它会去/WEB-INF/applicationContext.xml文件。如果自己想要将配置文件放到classpath下,即src目录下,则需要再进行路径的指定,具体代码如下:
这样的话,在服务器启动的时候就会自动的去classpa也就是src目录下找所有的以:applicationContext-*.xml文件并将它们初始化。
Spring加载resource时classpath*:与classpath:的区别
Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件.
比如 resource1.jar中的package 'com.test.rs' 有一个 'jarAppcontext.xml' 文件,内容如下:
<bean name="ProcessorImplA" class="com.test.spring.di.ProcessorImplA" />
resource2.jar中的package 'com.test.rs' 也有一个 'jarAppcontext.xml' 文件,内容如下:
<bean id="ProcessorImplB" class="com.test.spring.di.ProcessorImplB" />
通过使用下面的代码则可以将两个jar包中的文件都加载进来
ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath*:com/test/rs/jarAppcontext.xml");
而如果写成下面的代码,就只能找到其中的一个xml文件(顺序取决于jar包的加载顺序)
ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath:com/test/rs/jarAppcontext.xml");
classpath*:的使用是为了多个component(最终发布成不同的jar包)并行开发,各自的bean定义文件按照一定的规则:package+filename,而使用这些component的调用者可以把这些文件都加载进来.
classpath*:的加载使用了classloader的 getResources() 方法,如果是在不同的J2EE服务器上运行,由于应用服务器提供自己的classloader实现,它们在处理jar文件时的行为也许会有所不同。 要测试classpath*: 是否有效,可以用classloader从classpath中的jar文件里加载文件来进行测试:getClass().getClassLoader().getResources("<someFileInsideTheJar>")。(上面的例子是在sun的jre中运行的状态)
从Spring的源码,在PathMatchingResourcePatternResolver类中,我们可以更清楚的了解其对的处理:如果是以classpath*开头,它会遍历classpath.
http://blog.csdn.net/kkdelta/article/details/5560210,简介了在JAVA里遍历classpath中读取找到的所有符合名称的文件.
另外在加载resource的时候,其他前缀的意义如下表所示:注意classpath*只能用与指定配置文件的路径,不能用在用于getResource的参数.如appContext.getResource("classpath*:conf/bfactoryCtx.xml")会异常的.
从Spring的源码可以看出原因:如果是classpath:开头,从classpath加载,否则尝试URL,如果失败,调用 getResourceByPath
getResourceByPath会被不同ApplicationContext 实现覆盖.
如 GenericWebApplicationContext覆盖为如下:
protected Resource getResourceByPath(String path) {
return new ServletContextResource(this.servletContext, path);
}
如 FileSystemXmlApplicationContext覆盖为如下:
最终从文件加载的时候仍然是JAVA中常见的读取文件的方法:
如ClassPathResource得到inputstream的方法是利用class loader.
如FileSystemResource得到inputstream的方法是利用FileInputStream.
public InputStream getInputStream() throws IOException {
return new FileInputStream(this.file);
}
如ServletContextResource得到inputstream的方法是利用servletContext.getResourceAsStream.
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
只要其启动服务这个配置就会默认的去加载我们的配置文件,自动的将里面的bean都给初始化了。默认情况下它会去/WEB-INF/applicationContext.xml文件。如果自己想要将配置文件放到classpath下,即src目录下,则需要再进行路径的指定,具体代码如下:
<!-- Context Configuration locations for Spring XML files --> <context-param> <param-name>contextConfigLocation</param-name> <!-- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value> --> <!-- 加入你的配置文件放在了src下的,命名规则为:applicationContext-*.xml形式,则可以从以下方式配置--> <param-value>classpath:applicationContext-*.xml</param-value> </context-param>
这样的话,在服务器启动的时候就会自动的去classpa也就是src目录下找所有的以:applicationContext-*.xml文件并将它们初始化。
Spring加载resource时classpath*:与classpath:的区别
Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件.
比如 resource1.jar中的package 'com.test.rs' 有一个 'jarAppcontext.xml' 文件,内容如下:
<bean name="ProcessorImplA" class="com.test.spring.di.ProcessorImplA" />
resource2.jar中的package 'com.test.rs' 也有一个 'jarAppcontext.xml' 文件,内容如下:
<bean id="ProcessorImplB" class="com.test.spring.di.ProcessorImplB" />
通过使用下面的代码则可以将两个jar包中的文件都加载进来
ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath*:com/test/rs/jarAppcontext.xml");
而如果写成下面的代码,就只能找到其中的一个xml文件(顺序取决于jar包的加载顺序)
ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath:com/test/rs/jarAppcontext.xml");
classpath*:的使用是为了多个component(最终发布成不同的jar包)并行开发,各自的bean定义文件按照一定的规则:package+filename,而使用这些component的调用者可以把这些文件都加载进来.
classpath*:的加载使用了classloader的 getResources() 方法,如果是在不同的J2EE服务器上运行,由于应用服务器提供自己的classloader实现,它们在处理jar文件时的行为也许会有所不同。 要测试classpath*: 是否有效,可以用classloader从classpath中的jar文件里加载文件来进行测试:getClass().getClassLoader().getResources("<someFileInsideTheJar>")。(上面的例子是在sun的jre中运行的状态)
从Spring的源码,在PathMatchingResourcePatternResolver类中,我们可以更清楚的了解其对的处理:如果是以classpath*开头,它会遍历classpath.
protected Resource[] findAllClassPathResources(String location) throws IOException { String path = location; if (path.startsWith("/")) { path = path.substring(1); } Enumeration resourceUrls = getClassLoader().getResources(path); Set<Resource> result = new LinkedHashSet<Resource>(16); while (resourceUrls.hasMoreElements()) { URL url = (URL) resourceUrls.nextElement(); result.add(convertClassLoaderURL(url)); } return result.toArray(new Resource[result.size()]); }
http://blog.csdn.net/kkdelta/article/details/5560210,简介了在JAVA里遍历classpath中读取找到的所有符合名称的文件.
另外在加载resource的时候,其他前缀的意义如下表所示:注意classpath*只能用与指定配置文件的路径,不能用在用于getResource的参数.如appContext.getResource("classpath*:conf/bfactoryCtx.xml")会异常的.
从Spring的源码可以看出原因:如果是classpath:开头,从classpath加载,否则尝试URL,如果失败,调用 getResourceByPath
public Resource getResource(String location) { Assert.notNull(location, "Location must not be null"); if (location.startsWith(CLASSPATH_URL_PREFIX)) { return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()), getClassLoader()); } else { try { // Try to parse the location as a URL... URL url = new URL(location); return new UrlResource(url); } catch (MalformedURLException ex) { // No URL -> resolve as resource path. return getResourceByPath(location); } } }
getResourceByPath会被不同ApplicationContext 实现覆盖.
如 GenericWebApplicationContext覆盖为如下:
protected Resource getResourceByPath(String path) {
return new ServletContextResource(this.servletContext, path);
}
如 FileSystemXmlApplicationContext覆盖为如下:
protected Resource getResourceByPath(String path) { if (path != null && path.startsWith("/")) { path = path.substring(1); } return new FileSystemResource(path); }
最终从文件加载的时候仍然是JAVA中常见的读取文件的方法:
如ClassPathResource得到inputstream的方法是利用class loader.
public InputStream getInputStream() throws IOException { InputStream is; if (this.clazz != null) { is = this.clazz.getResourceAsStream(this.path); }
如FileSystemResource得到inputstream的方法是利用FileInputStream.
public InputStream getInputStream() throws IOException {
return new FileInputStream(this.file);
}
如ServletContextResource得到inputstream的方法是利用servletContext.getResourceAsStream.
public InputStream getInputStream() throws IOException { InputStream is = this.servletContext.getResourceAsStream(this.path); if (is == null) { throw new FileNotFoundException("Could not open " + getDescription()); } return is; }
发表评论
-
分享JAVA从程序员到架构师之路的各项资料
2016-06-25 15:46 386JAVA架构师视频资料,搭建高并发、高可用电商架构设计资料 ... -
Java线程面试题Top50
2016-02-17 09:47 728不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。 ... -
XSD (xml Schema Definition
2014-12-22 16:33 684XSD (xml Schema Definition) ... -
在Web.xml中自动扫描Spring的配置文件及resource时classpath*:与classpath:的区别
2014-12-22 14:16 0首先在web.xml中配置监听器listener,让Sprin ... -
在Web.xml中自动扫描Spring的配置文件及resource时classpath*:与classpath:的区别
2014-12-22 14:15 0首先在web.xml中配置监听器listener,让Sprin ... -
转 JAVA读取外部资源的方法
2014-12-22 14:04 1719在java代码中经常有读取外部资源的要求:如配置文件等等,通常 ... -
oscache.properties文件配置
2014-05-28 13:22 8811、cache.memory 是否使用 ... -
oscache 使用总结
2014-05-28 13:21 554前阵子对公司网站进行了性能优化,其中,有一项就是使用OSCac ... -
华为JAVA编程规范
2014-04-18 11:14 1209Java 编程规范 排版 规 ... -
Spring声明式事务配置管理方法
2014-04-16 17:50 668环境配置 项目使用SSH架构,现在要添加Spring事务管理 ... -
Spring MVC和Struts2的比较
2014-04-16 17:29 613虽然说没有系统的学习 ... -
漂浮广告代码、漂浮代码分析(讲解)
2014-04-10 08:47 655总共有三个文件1.htm 主文件、liangbian.js 在 ... -
追MM与23种设计模式
2014-04-10 09:03 1224创建型模式 1、FACTORY— ... -
关于权限控制的讨论
2014-04-09 16:54 600在许多的实际应用中, ... -
转 对Spring IoC容器实现的结构分析
2014-04-09 16:39 594本文的目标: 从实现的角度来认识SpringIoC容器。 观 ... -
转 解决json转换hibernate 结果集对象
2014-04-09 16:28 769在使用ext+ssh框架过程 ... -
转:Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
2014-04-09 16:14 1296Spring事务配置的五种方式 前段时间对Spring的事务 ... -
Spring事务 7个传播行为,4个隔离级别
2014-04-09 16:13 634转载自:http://blog.chinaunix.net/u ... -
java创建实例的几种方法
2014-02-14 10:34 901从大体上分,有三种 1.使用new关键字 2.使用反射 3.序 ... -
基于java反射机制实现javabean转json字符串
2013-09-16 14:13 2494package com.ObjectToJson; impo ...
相关推荐
2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载...
2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言...
3.7. General Web Improvements ............................................................................... 19 3.8. WebSocket, SockJS, and STOMP Messaging ..............................................
2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载...
@Component("userService")等价于在spring配置文件中定义一个<bean id="userService"/> @Resource(name="userDAO")将userDA注入进来 写一个拦截器的类 package com.spring.aop; import org.springframework....
3.7. General Web Improvements ............................................................................... 19 3.8. WebSocket, SockJS, and STOMP Messaging ..............................................
logging.config=classpath:config/logback-spring.xml,把config文件夹复制到resource下即可,logback-spring.xml不需要修改,路径和日志大小格式等配置在logback.properties中。
Spring MVC自动配置 ii. 26.1.2. HttpMessageConverters Spring Boot参考指南 3 iii. 26.1.3. MessageCodesResolver iv. 26.1.4. 静态内容 v. 26.1.5. 模板引擎 vi. 26.1.6. 错误处理 vii. 26.1.7. Spring HATEOAS ...
查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...
Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in URL [file:/E:/cloudwave-core/src/main/webapp/WEB- INF/classes/...
二、ClassPathXmlApplicationContext[只能读放在web-info/classes目录下的配置文件]和FileSystemXmlApplicationContext的区别 classpath:前缀是不需要的,默认就是指项目的classpath路径下面; 如果要使用绝对路径,...
27.1. The “Spring Web MVC Framework” 27.1.1. Spring MVC Auto-configuration 27.1.2. HttpMessageConverters 27.1.3. Custom JSON Serializers and Deserializers 27.1.4. MessageCodesResolver 27.1.5. Static...
网上的东西好大多都不能直接用,自己结合网上资料做了一个Struts2+Spring3+MyBatis3的测试工程,JUnit测试用例和WEB服务。 内涵完整jar包,解压直接可用,包括一个表文件。 Eclipse3.2+Tomcat/5.5+jdk1.5.0_17 - ...
-- 1 配置注解的自动扫描--> <context:component-scan base-package="cn.itcast.crm"/> <!--3 配置本地化代理工程bean,这是spring整合hibernate的入口 --> ...
--全局初始化参数--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> 4.在Servlet中使用WebApplicationContextUtils获取容器...
-- 这三行的配置不用去检查对应的路径下是否有对应的文件,因为cxf会自动生成的--> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /...
导入依赖Mybatis Plus 依赖,在Mybatis Plus官网安装模块,选择spring boot的maven依赖包 <!-- Mybatis Plus组件--> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter <version>3.4.0 ...
-- 此处hibernate 的映射 采用的是.xml 配置同则应设置具体配置文件名(*.hbm.xml)</value>--> </list> </property> <!-- 事务配置管理 --> <bean id="transactionManager" class="org.springframework...
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> ...
对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 mvc:annotation-driven --> <mvc:annotation-driven/> <!-- 扫描包 --> <context:annotation-config/> <context:component-scan base...