在原来的程序基础上加了Shiro框架之后再使用@Transactional注解会莫名其妙地出现这个错误,日志大概如下:

2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:221 - Creating shared instance of singleton bean 'manageSiteService'
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:448 - Creating instance of bean 'manageSiteService'
2016-11-03 22:34:25 DEBUG InjectionMetadata:72 - Registered injected element on class [com.iot.baobiao.service.ManageSiteService]: AutowiredFieldElement for private com.iot.baobiao.dao.UserDaoInterface com.iot.baobiao.service.ManageSiteService.userDaoInterface
2016-11-03 22:34:25 DEBUG InjectionMetadata:72 - Registered injected element on class [com.iot.baobiao.service.ManageSiteService]: AutowiredFieldElement for private com.iot.baobiao.dao.SiteDaoInterface com.iot.baobiao.service.ManageSiteService.siteDaoInterface
2016-11-03 22:34:25 DEBUG InjectionMetadata:72 - Registered injected element on class [com.iot.baobiao.service.ManageSiteService]: AutowiredFieldElement for private com.iot.baobiao.dao.UserSiteDaoInterface com.iot.baobiao.service.ManageSiteService.userSiteDaoInterface
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:529 - Eagerly caching bean 'manageSiteService' to allow for resolving potential circular references
2016-11-03 22:34:25 DEBUG InjectionMetadata:86 - Processing injected element of bean 'manageSiteService': AutowiredFieldElement for private com.iot.baobiao.dao.UserDaoInterface com.iot.baobiao.service.ManageSiteService.userDaoInterface
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'userDaoInterfaceImpl'
2016-11-03 22:34:25 DEBUG AutowiredAnnotationBeanPostProcessor:517 - Autowiring by type from bean name 'manageSiteService' to bean named 'userDaoInterfaceImpl'
2016-11-03 22:34:25 DEBUG InjectionMetadata:86 - Processing injected element of bean 'manageSiteService': AutowiredFieldElement for private com.iot.baobiao.dao.SiteDaoInterface com.iot.baobiao.service.ManageSiteService.siteDaoInterface
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'siteDaoInterfaceImpl'
2016-11-03 22:34:25 DEBUG AutowiredAnnotationBeanPostProcessor:517 - Autowiring by type from bean name 'manageSiteService' to bean named 'siteDaoInterfaceImpl'
2016-11-03 22:34:25 DEBUG InjectionMetadata:86 - Processing injected element of bean 'manageSiteService': AutowiredFieldElement for private com.iot.baobiao.dao.UserSiteDaoInterface com.iot.baobiao.service.ManageSiteService.userSiteDaoInterface
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'userSiteDaoInterfaceImpl'
2016-11-03 22:34:25 DEBUG AutowiredAnnotationBeanPostProcessor:517 - Autowiring by type from bean name 'manageSiteService' to bean named 'userSiteDaoInterfaceImpl'
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.cache.config.internalCacheAdvisor'
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2016-11-03 22:34:25 DEBUG AnnotationTransactionAttributeSource:108 - Adding transactional method 'ManageSiteService.addUserSite' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
2016-11-03 22:34:25 DEBUG InfrastructureAdvisorAutoProxyCreator:528 - Creating implicit proxy for bean 'manageSiteService' with 0 common interceptors and 1 specific interceptors
2016-11-03 22:34:25 DEBUG CglibAopProxy:159 - Creating CGLIB proxy: target source is SingletonTargetSource for target object [com.iot.baobiao.service.ManageSiteService@31125aed]
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: public java.lang.String com.iot.baobiao.service.ManageSiteService.deleteSiteByDomain(java.lang.String)
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: public void com.iot.baobiao.service.ManageSiteService.deleteUserSite(int,int)
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: public java.util.List com.iot.baobiao.service.ManageSiteService.queryUserSite(int)
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: public int com.iot.baobiao.service.ManageSiteService.addUserSite(int,java.util.Map)
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: public java.util.List com.iot.baobiao.service.ManageSiteService.queryDomainList()
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: public java.util.List com.iot.baobiao.service.ManageSiteService.queryUserSiteID(int)
2016-11-03 22:34:25 DEBUG CglibAopProxy:797 - Found 'equals' method: public boolean java.lang.Object.equals(java.lang.Object)
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: public java.lang.String java.lang.Object.toString()
2016-11-03 22:34:25 DEBUG CglibAopProxy:802 - Found 'hashCode' method: public native int java.lang.Object.hashCode()
2016-11-03 22:34:25 DEBUG CglibAopProxy:833 - Unable to apply any optimisations to advised method: protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract int org.springframework.aop.framework.Advised.indexOf(org.springframework.aop.Advisor)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract int org.springframework.aop.framework.Advised.indexOf(org.aopalliance.aop.Advice)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isFrozen()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvice(org.aopalliance.aop.Advice) throws org.springframework.aop.framework.AopConfigException
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvice(int,org.aopalliance.aop.Advice) throws org.springframework.aop.framework.AopConfigException
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.removeAdvice(org.aopalliance.aop.Advice)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.replaceAdvisor(org.springframework.aop.Advisor,org.springframework.aop.Advisor) throws org.springframework.aop.framework.AopConfigException
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.removeAdvisor(org.springframework.aop.Advisor)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.removeAdvisor(int) throws org.springframework.aop.framework.AopConfigException
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isPreFiltered()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract org.springframework.aop.Advisor[] org.springframework.aop.framework.Advised.getAdvisors()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.setTargetSource(org.springframework.aop.TargetSource)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvisor(int,org.springframework.aop.Advisor) throws org.springframework.aop.framework.AopConfigException
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.addAdvisor(org.springframework.aop.Advisor) throws org.springframework.aop.framework.AopConfigException
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract org.springframework.aop.TargetSource org.springframework.aop.framework.Advised.getTargetSource()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.setPreFiltered(boolean)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isExposeProxy()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract void org.springframework.aop.framework.Advised.setExposeProxy(boolean)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isProxyTargetClass()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract java.lang.Class[] org.springframework.aop.framework.Advised.getProxiedInterfaces()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract boolean org.springframework.aop.framework.Advised.isInterfaceProxied(java.lang.Class)
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract java.lang.String org.springframework.aop.framework.Advised.toProxyConfigString()
2016-11-03 22:34:25 DEBUG CglibAopProxy:791 - Method is declared on Advised interface: public abstract java.lang.Class org.springframework.aop.TargetClassAware.getTargetClass()
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.cache.config.internalCacheAdvisor'
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'authorizationAttributeSourceAdvisor'
2016-11-03 22:34:25 DEBUG AnnotationTransactionAttributeSource:108 - Adding transactional method 'ManageSiteService$$EnhancerBySpringCGLIB$$6e5c0f57.addUserSite' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
2016-11-03 22:34:25 DEBUG DefaultAdvisorAutoProxyCreator:528 - Creating implicit proxy for bean 'manageSiteService' with 0 common interceptors and 1 specific interceptors
2016-11-03 22:34:25 DEBUG JdkDynamicAopProxy:118 - Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [com.iot.baobiao.service.ManageSiteService$$EnhancerBySpringCGLIB$$6e5c0f57@5924b25f]
2016-11-03 22:34:25 DEBUG DefaultListableBeanFactory:484 - Finished creating instance of bean 'manageSiteService'......2016-11-03 22:34:31 DEBUG DefaultListableBeanFactory:529 - Eagerly caching bean 'siteController' to allow for resolving potential circular references
2016-11-03 22:34:31 DEBUG InjectionMetadata:86 - Processing injected element of bean 'siteController': AutowiredFieldElement for com.iot.baobiao.service.ManageSiteService com.iot.baobiao.controller.SiteController.manageSiteService
2016-11-03 22:34:31 WARN  AnnotationConfigWebApplicationContext:549 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'siteController': Unsatisfied dependency expressed through field 'manageSiteService': No qualifying bean of type [com.iot.baobiao.service.ManageSiteService] found for dependency [com.iot.baobiao.service.ManageSiteService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.iot.baobiao.service.ManageSiteService] found for dependency [com.iot.baobiao.service.ManageSiteService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
2016-11-03 22:34:31 DEBUG DefaultListableBeanFactory:512 - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5859e555: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.event.internalEventListenerProcessor,org.springframework.context.event.internalEventListenerFactory,webConfig,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor,customExceptionHandler,loginController,payController,siteController,userController,org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration,defaultServletHandlerMapping,mvcConversionService,beanNameHandlerMapping,simpleControllerHandlerAdapter,requestMappingHandlerMapping,mvcResourceUrlProvider,resourceHandlerMapping,viewControllerHandlerMapping,mvcUriComponentsContributor,requestMappingHandlerAdapter,httpRequestHandlerAdapter,mvcContentNegotiationManager,handlerExceptionResolver,mvcValidator,mvcUrlPathHelper,mvcPathMatcher,mvcViewResolver,shiroFilter,viewResolver]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@30aa879f
03-Nov-2016 22:34:31.276 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter shiroFilterorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'siteController': Unsatisfied dependency expressed through field 'manageSiteService': No qualifying bean of type [com.iot.baobiao.service.ManageSiteService] found for dependency [com.iot.baobiao.service.ManageSiteService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.iot.baobiao.service.ManageSiteService] found for dependency [com.iot.baobiao.service.ManageSiteService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:350)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:775)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)at org.springframework.web.filter.DelegatingFilterProxy.findWebApplicationContext(DelegatingFilterProxy.java:297)at org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:233)at org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:199)at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:109)at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4689)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5329)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1696)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:484)at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:433)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)at sun.rmi.transport.Transport$1.run(Transport.java:200)at sun.rmi.transport.Transport$1.run(Transport.java:197)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.Transport.serviceCall(Transport.java:196)at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.iot.baobiao.service.ManageSiteService] found for dependency [com.iot.baobiao.service.ManageSiteService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1398)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1051)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1018)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:570)... 62 more

这样的错误大概原因就是Cglib无法创建带有@Transactional注解的方法的类的代理,所以Spring就采用了JDK动态代理的方法来给带有@Transactional注解的方法创建代理,但是JDK动态代理只能代理实现了接口的类,而ManageSiteService类没有实现接口,所以问题就出现了。解决的方法就是创建一个接口ManageSiteService,再创建一个类实现这个接口ManageSiteServiceImpl,注入这个实现类,就可以在这个实现类的方法上面使用@Transactional注解了!这样即使Cglib代理不了也可以使用JDK动态代理来实现@Transactional注解。修改后的创建ManageSiteService Bean的部分日志如下:

2016-11-04 09:18:35 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'userSiteDaoInterfaceImpl'
2016-11-04 09:18:35 DEBUG AutowiredAnnotationBeanPostProcessor:517 - Autowiring by type from bean name 'manageSiteServiceImpl' to bean named 'userSiteDaoInterfaceImpl'
2016-11-04 09:18:35 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.cache.config.internalCacheAdvisor'
2016-11-04 09:18:35 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2016-11-04 09:18:35 DEBUG AnnotationTransactionAttributeSource:108 - Adding transactional method 'ManageSiteServiceImpl.addUserSite' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
2016-11-04 09:18:35 DEBUG InfrastructureAdvisorAutoProxyCreator:528 - Creating implicit proxy for bean 'manageSiteServiceImpl' with 0 common interceptors and 1 specific interceptors
2016-11-04 09:18:35 DEBUG JdkDynamicAopProxy:118 - Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [com.iot.baobiao.service.ManageSiteServiceImpl@39b79729]
2016-11-04 09:18:35 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.cache.config.internalCacheAdvisor'
2016-11-04 09:18:35 DEBUG DefaultListableBeanFactory:251 - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'

可以看到直接使用了JDK动态代理。

Spring @Transactional注解出错:CglibAopProxy - Unable to apply any optimisations to advised method相关推荐

  1. Unable to apply any optimisations to advised method 信息解析

    在Spring3中使用CgLib动态代理时出现类似以下日志: [DEBUG] 2011-06-16 23:23:54,457 org.springframework.aop.framework.Cgl ...

  2. spring@Transactional注解事务不回滚不起作用无效的问题处理

    这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性 先来了解一下@Transactio ...

  3. spring @Transactional注解参数详解

    事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: @Transactional public class TestServiceBean imp ...

  4. spring@Transactional注解

    今天遇到一个Transaction rolled back because it has been marked as rollback-only错误,controller调用service的方法总是 ...

  5. Spring @Transactional注解浅谈

    引言: 在Spring中@Transactional提供一种控制事务管理的快捷手段,但是很多人都只是@Transactional简单使用,并未深入了解,其各个配置项的使用方法,本文将深入讲解各个配置项 ...

  6. @Modifying注解和@Transactional注解?

    JPA中自定义的插入.更新.删除方法为什么要添加@Modifying注解和@Transactional注解? 前几天,有个同事在使用JPA的自定义SQL方法时,程序一直报异常,捣鼓了半天也没能解决,咨 ...

  7. spring + mybatis 注解 @Transactional失效

    1.问题 在使用@Transactional注解管理事务的时候会出现很多错误,比如: *** was not registered for synchronization because synchr ...

  8. 面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景

    一.Spring事务管理的两种方式 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种. 编程式事务:是指在代码中手动的管理事务的提交.回滚 ...

  9. Spring Boot 中使用 @Transactional 注解配置事务管理

    From: https://blog.csdn.net/nextyu/article/details/78669997 事务管理是应用系统开发中必不可少的一部分.Spring 为事务管理提供了丰富的功 ...

  10. 聊一聊Spring中@Transactional注解及其失效的七种场景

    文章目录 一.事务(基于AOP) 二.@Transactional介绍 三.@Transactional失效场景 说明:当我准备写我知道的那几个场景时,我发现有人比我写的更好,关键是好得多,于是我就用 ...

最新文章

  1. RadGrid使用技巧:从RadGrid获取绑定的值
  2. Nacos客户端配置
  3. 揭秘熊猫TV HEVC直播
  4. python三级字典_python_三级字典
  5. 【Java】统计字符串中每个字符出现的次数
  6. pandas使用dataframe直接绘图时,取消图例(legend)
  7. different intergers
  8. 谷歌地图:谷歌地图的级别与对应比例尺及分辨率探究
  9. 三个线性同余方程组的计算机解决方案(C程序)
  10. 多平台、简洁思维导图工具推荐-幕布[高级会员获取]
  11. 微信翻译助手小程序 day2 -翻译功能页
  12. 视频教程-鼎捷易飞ERP视频教程-ERP
  13. 理光Ricoh Aficio MP C7501SP 一体机驱动
  14. 统计学习方法 第二章 感知机
  15. 深度学习:图像去雨网络实现Pytorch (二)一个简单实用的基准模型(PreNet)实现
  16. 【转】DotNetNuke常用扩展模块
  17. 计算机桌面黑屏有鼠标,电脑屏幕黑屏但有鼠标指针是怎么回事?
  18. win10安装msi文件
  19. 【CSS】987- 十几个 CSS 高级技巧汇总
  20. 福利篇1——嵌入式软件行业与公司汇总

热门文章

  1. 【阿里云-云栖社区】喜欢的记得关注(每日更新)
  2. 玩转字符串篇--代码自动生成,解放双手,android音视频开发
  3. vb冒泡排序法流程图_vb数组排序-冒泡排序法
  4. aop:aspectj-autoproxy /的作用
  5. win10卸载软件_win10系统频繁闪屏刷新解决方法
  6. sbit在c语言中作用,sbit在单片机中的表示和作用?
  7. python爬取电影评分_python爬取豆瓣电影排行榜(requests)的示例代码
  8. 0CTF piapiapia
  9. Win10红警如何关闭3d加速?
  10. 厦大C语言上机 1360 算日期