小弟对spring不熟,下面的代码就是我的普通类,一个在util包下的普通类 LuceneUtil这个类没在spring配置
ICrmQuotationService这个service在 action中使用说明是配置了的
package com.erp.travel.common.utils;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.erp.travel.base.model.Article;
import com.erp.travel.module.crmQuotation.service.ICrmQuotationService;
/**
* 创建索引库
* @author bzg
*/
public class LuceneUtil {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("com/erp/travel/cfg/spring/applicationContext.xml");
@Test
public void createIndexWriter(){
ICrmQuotationService crmQuotationService =
(ICrmQuotationService) applicationContext.getBean("");
/**
* 查询索引库内容
*/
List<Article> article = crmQuotationService.findArticle();
}
}
然后我执行就报错了
一下是我的applicationContex.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://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- DB配置文件读入-->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>
classpath:com/erp/travel/cfg/database/jdbc.properties
</value>
</list>
</property>
</bean>
<!-- 配置数据源-->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="minPoolSize" value="1" />
<property name="maxPoolSize" value="300" />
<property name="maxIdleTime" value="60" />
<property name="acquireIncrement" value="5" />
<property name="initialPoolSize" value="1" />
<property name="idleConnectionTestPeriod" value="60" />
</bean>
<!-- 为SqlMap绑定数据源 -->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>
classpath:/com/erp/travel/cfg/ibatis/sqlMapConfig.xml
</value>
</property>
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事物管理配置 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<aop:config>
<!-- 切入点指明在所有方法产生事务时的拦截操作,这里只拦截业务逻辑层-->
<aop:pointcut id="serviceMethods"
expression="execution(* com.erp.travel.module.*.service.*.*(..))" />
<!-- 定义了将采用何种拦截操作,这里引用到 txAdvice -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
</aop:config>
<!-- 事务的通知操作,使用的事务管理器引用自 transactionManager -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 指定哪些方法需要加入事务,这里使用通配符只加入需要拦截的方法 -->
<tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="-Exception"/>
<tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="-Exception"/>
<tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="-Exception"/>
<tx:method name="modify*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="-Exception"/>
<tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="-Exception"/>
<tx:method name="remove*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="-Exception"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="select*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<bean id="baseDao" class="com.erp.travel.common.dao.BaseDaoImpl">
<property name="dataSource" ref="dataSource" />
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
<!-- 加入Aspectj配置 -->
<aop:aspectj-autoproxy />
<bean id="logAspect" class="com.erp.travel.base.advice.SystemLog" />
<context:component-scan base-package="com.erp.travel.base.dao.impl" />
<context:component-scan base-package="com.erp.travel.module.*.service.impl" />
<context:component-scan base-package="com.erp.travel.module.*.action" />
<context:component-scan base-package="com.erp.travel.module.*.*.service.impl" />
<context:component-scan base-package="com.erp.travel.module.*.*.action" />
<context:component-scan base-package="com.erp.travel.common.*.action" />
</beans>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
报错信息很明显,ICrmQuotationService未在spring容器了实例化<aclass='referer'target='_blank'>@ServicepublicinterfaceICrmQuotationService{我加上了还是报找不到这个service错误回复<aclass='referer'target='_blank'>@帅狗:<context:component-scanbase-package="com.erp.travel.module.*.service.impl"/>这段代表你扫描了service.impl包的class类,如这个包里有个类<aclass='referer'target='_blank'>@ServicepublicclassXXXservice{XXXX}那么spring会把XXXservice实例化回复<aclass='referer'target='_blank'>@Black_JackQ:不明白,spring学的不好回复<aclass='referer'target='_blank'>@帅狗:spring扫包时,要加入注解如在service层的class类上加入@Service注解,来引导spring实例化类。ICrmQuotationService如何在spring中配置<divclass='ref'>
interface也能使用@service注解么?
表示疑惑
spring,我不太熟悉
<divclass="linenumber22index21alt1"> ICrmQuotationServicecrmQuotationService=<spanstyle="line-height:1.5;"> (ICrmQuotationService)applicationContext.getBean(" <spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;font-size:14px;line-height:21px;background-color:#E53333;"> iCrmQuotationService ");试试。接口好像不能实例化,我换成实现类