后台读取applicationContext.xml引发的奇葩问题

SpringMVC整合ibatis时,写了一个测试方法,运行正常,当运行另一个方法时报找不到对应的路径。此处无法理解,为什么同样规则的请求,第一次能够拦截第二次却提示找不到对应的处理方法。

后来将添加的第二个方法逐一注释掉,才发现在Dao层中读取applicationContext.xml时,为了让dao层的各方法共用一个applicationContext.xml,我将读取它的代码提取了出来,作为成员变量

处理了。后将每个dao方法添加同样的读取代码后,程序正常运行。添加代码如下:

ApplicationContext context=
new ClassPathXmlApplicationContext("applicationContext.xml");
SqlMapClient sqlMapClient=(SqlMapClient) context.getBean("sqlMapClient");

猜测原因为:spring配置文件中bean默认为单例模式导致。后续将对该问题进行测试。

————————————————————————————————————————————————————————

为解决共用SqlMapClient的问题,我们可以提供一个BaseDao。

public class BaseDao extends SqlMapClientDaoSupport{
@Resource(name="sqlMapClient")
private SqlMapClient sqlMapClient;

@PostConstruct
public void initSqlMapClient(){
super.setSqlMapClient(sqlMapClient);
}
}

dao层继承BaseDao之后,便能使用SqlMapClientDaoSupport提取的静态方法:

getSqlMapClient().queryForObject("user.findById",id);//使用此方法时可将applicationContext.xml中的sqlMapClientTemplate bean去掉。

后台读取applicationContext.xml引发的奇葩问题,布布扣,bubuko.com

时间: 2024-12-28 12:57:26

后台读取applicationContext.xml引发的奇葩问题的相关文章

Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)

<bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil" lazy-init="false"> <property name="locations"> <list> <value>classpath:config/sys.properties</value> &

applicationContext.xml简单笔记

applicationContext.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://

SpringMVC之application-context.xml,了解数据库相关配置

上一篇SpringMVC之web.xml让我们了解到配置一个web项目的时候,如何做基础的DispatcherServlet相关配置,作为SpringMVC上手的第一步,而application-context.xml则让我们了解到如何将数据库信息加载到项目中,包含关键的数据库连接信息.sqlSessionFactory.事务等关键因素. ①.xml内容 <?xml version="1.0" encoding="UTF-8"?> <beans x

UWP 读取本地XML文件

读取本地XML文件时要将xxx.xml文件的“生成操作”改为“嵌入的资源”会比较好,在手机上运行的话需要改为“内容” <?xml version="1.0" encoding="utf-8"?> <DataSet xmlns="http://WebXml.com.cn/"> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata

spring applicationContext.xml和hibernate.cfg.xml设置

applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://ww

通过new ClasspathApplicationContext(&quot;applicationContext.xml&quot;)找不到文件时

可以把applicationContext.xml放到/WEB-INF/classes目录下使用new ClassPathXmlApplicationContext("applicationContext.xml"); 来读取! 如果是在Web.xml中的话,需要配置Context Listener:<listener><listener-class>org.springframework.web.context.ContextLoaderListener<

SSH applicationContext.xml import异常

最近在项目上,遇到了一个问题,在配置applicationContext.xml使用<import>标签引入其它的xml文件时,导致项目启动时过慢,有时还会引起启动异常,后来查到是xml文件头中的设置问题,虽然不太知道标签头的作用,但还是和大家分享一下经验: applicationContext.xml文件,只贴出了部分代码: <!-- 文件头--> <beans xmlns="http://www.springframework.org/schema/beans&

Spring 整合hibernate和mybatis的 applicationContext.xml的配置

Spring整合hibernate的applicationContext.xml配置 1.注解方式的实现 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x

xxx-servlet.xml vs applicationContext.xml

Spring lets you define multiple contexts in a parent-child hierarchy. The applicationContext.xml defines the beans for the "root webapp context", i.e. the context associated with the webapp. The spring-servlet.xml (or whatever else you call it)