LogPrint.java@Aspect
public class LogPrint {    private final Logger logger = LoggerFactory.getLogger(getClass());    @Pointcut("execution(* com.gosophia.metadataEngine.service.BussinessDataService.*(..))")
    private void inBussinessDataServiceImpl() {
    }    @AfterThrowing(pointcut = "inBussinessDataServiceImpl()", throwing = "ex")
    public void doExceptionAction(BusinessException ex) {
        logger.error(ex.getMessage(),ex);
        System.out.println(".......................");
    }
    
    @Before("inBussinessDataServiceImpl()")
    public void doAccessCheck(String userName) {
        System.out.println("前置通知");
    }}配置文件moduleContext.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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    " >
    <context:component-scan base-package="com.gosophia.metadataEngine.dao" />
    <context:component-scan base-package="com.gosophia.metadataEngine.service.impl" />
    <bean id="logPrint" class="com.gosophia.metadataEngine.common.LogPrint"></bean>
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>applicationContext-ut.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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
">
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="false" />
<property name="locations">
<list>
<value>classpath:/application-test.properties
</value>
</list>
</property>
</bean> <!-- 数据源配置,在测试环境使用JDBC直接连接 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
....
         </bean> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
.......
</bean> <bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /></beans>测试代码@ContextConfiguration(locations = { "classpath:moduleContext.xml",
        "classpath:applicationContext-ut.xml" })
public class UTBussinessDataServiceImpl extends
        AbstractTransactionalJUnit4SpringContextTests {    @Autowired
    private BussinessDataServiceImpl bussinessDataServiceImpl;    /**
     * 根据metadataTabelId ,查询条件, 分页信息 获取业务数据,metadataTableId为空
     * 
     * @throws BusinessException
     */
    @Test(expected = IllegalArgumentException.class)
    public void getDataSimpleSearchMetadataTableIdNull()
            throws BusinessException {
        bussinessDataServiceImpl.getData(null, 1, 1, null, null, "");
    }
    ......
   
运行测试代码时报如下异常[org.springframework.test.context.support.DependencyInjectionTestExecutionListener@8f9a32] to prepare test instance [com.gosophia.metadataEngine.service.impl.test.unit.UTBussinessDataServiceImpl@96b5c2]
java.lang.IllegalStateException: Failed to load ApplicationContext
......
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [applicationContext-ut.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Cannot resolve reference to bean 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0' while setting bean property 'transactionAttributeSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:405)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:42)
at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:173)
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:197)
... 17 more
[/code]找了好多相关的问题,但是没有答案,请高手帮忙解决下

解决方案 »

  1.   

    applicationContext-ut.xml配置文件的数据源配置dataSource有问题
      

  2.   

    Error creating bean with name 'dataSource' defined in class path resource [applicationContext-ut.xml]: BeanPostProcessor before instantiation of bean failed;异常看看应该就知道哪出问题了。
      

  3.   

    <bean id="dataSource"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            ....    
             </bean>
    瞅瞅你这个下面的配置看有问题没