关于在配置ssh时出现的两个问题

第一个问题:
配置完成后,启动tomcat,出现 Error listenerStart 异常,就这么几个字,多的一个没有。自己没搞定,于是上网查,热心人不少,主要归结原因有如下几点
1、jar包不正确(不全)
2、jar包冲突
3、xml配置文件有误(主要是对bean的配置)
等等原因吧。我一一查找,前两个都确定无误,可是xml的配置哪里是眼睛那么容易看出来的呢?晕……
解决方法:
1、去掉web.xml中的
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

不知道是谁想出来的,损人不利己,没有了这个东西,项目是没报错的起来了,可是不能用阿,管个鸟用!!!
2、采用log日志查错(推荐)
灵光一现,我想起了log4j这个东西。于是给自己的项目配置了一个log4j。苍天有眼,设置成error级别,控制台的错误刷刷的……。找到报错的原因了,这就是第二个问题
第二个问题:
采用spring的aop对hibernate的service(dao/manager)进行事务管理时,发现一个service想要注入与自己有关的service时,注入的是被spring托管的代理,而不是真正的service对象。异常崩溃。
xml配置文件代码:
	
<!-- 用spring的aop来管理所有的Service事务-->
<bean id="transactionProxyCreator"
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<list>
				<value>*Service</value>
			</list>
		</property>
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
			</list>
		</property>
	</bean>

	<bean id="userService"
		class="com.qquery.demo.service.UserService">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	<bean id="queryResultsService"
		class="org.query.extend.service.QueryResultsService">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
<!--在dwrQueryService想引入 userService,queryResultsService时出现异常, 原因就是对应不是具体的类而是代理。-->
	<bean id="dwrQueryService"
		class="org.query.service.DwrQueryService">
		<property name="userService">
			<ref bean="userService" />
		</property>
		<property name="queryResultsService">
			<ref bean="queryResultsService" />
		</property>
	</bean>


解决方法:
1、不用这种方式托管(废话)
2、给org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator加上属性proxyTargetClass;设置为
<property name="proxyTargetClass" value="true"></property>

调试通过。

总结一下:
第一个问题,说明了我们在做项目时,应该有实用log日志的良好习惯
第二个问题,说明了spring的博大精深阿。
奋斗。

你可能感兴趣的:(spring,AOP,log4j,ssh,配置管理)