1
回答
web调用后台程序spring无法注入问题
科大讯飞通用文字识别100000次/天免费使用。立即申请   
架构是这样的 ssh(struts2,spring3.1,hibernate4) action->el->service-dao 
el模块里有个  线程池 ,我管  线程 叫  工头 .然后el模块还有个线程类.我管这个  线程类 叫  工人
工头从任务队列添加任务,工头要先查下数据库这个任务是否(调service查找),这个时候service对象是为空的, 
我分析了是service里的dao里的sessionFactiory,是为空,导致层层都没有获取成功,我现在假设把线程池对象交给spring管理那么线程池产生的线程对象也是交给spring,可能这种做法不是很好,但是不交给spring的话,service老为空,注意:工头也调service,工人也是调service . 

如果可以解决service不为空, 解决这个问题也可以不交spring管理

也分享一下我感觉比较爽的配置文件
<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.1.xsd">
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
	    <property name="url" value="jdbc:mysql://127.0.0.1:3306/spider"/>
	    <property name="username" value="root"/>
	    <property name="password" value="root"/>
  	</bean>
	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
	    <property name="dataSource" ref="dataSource"/>
	     <property name="packagesToScan">
		      <list>
		        <value>net.it.entity</value>
		      </list>
    	</property>
		<property name="hibernateProperties">
		      <value>
		        hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
		        hibernate.show_sql=true
		      </value>
		</property> 
	</bean>
<bean id="transactionManager" 
            class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
	<property name="transactionManager" ref="transactionManager"/>
	<property name="transactionAttributes">
		<props>
			<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
			<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
			<prop key="select*">PROPAGATION_REQUIRED,readOnly</prop>
			<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
			<prop key="add*">PROPAGATION_REQUIRED</prop>
			<prop key="update*">PROPAGATION_REQUIRED</prop>
			<prop key="remove*">PROPAGATION_REQUIRED</prop>
			<prop key="delete*">PROPAGATION_REQUIRED</prop>
			<prop key="check*">PROPAGATION_REQUIRED</prop>
			<prop key="save*">PROPAGATION_REQUIRED</prop>
			<prop key="*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
		</props>
	</property>
</bean>
<bean id="ProxyCreator" 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>
<context:annotation-config/>
<context:component-scan base-package="net.it">
</context:component-scan>
</beans>

举报
陈X生
发帖于5年前 1回/341阅
共有1个答案 最后回答: 5年前

泥煤我自己解决了 贴代码出来

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
	<property name="corePoolSize" value="5" />
	<property name="maxPoolSize" value="10" />
	<property name="queueCapacity" value="25" />
</bean>

private TaskExecutor pool;

	public TaskExecutor getPool() {
		return pool;
	}
	
	@Resource(name="taskExecutor")
	public void setPool(TaskExecutor pool) {
		this.pool = pool;
	}

顶部