当前位置: 首页 > 知识库问答 >
问题:

在spring项目中添加aspect后出现UnsatifiedDependencyException

齐弘业
2023-03-14

我在XML文件中有Spring配置的项目。我用切入点添加了以下方面。

<aop:aspectj-autoproxy/>

<aop:config proxy-target-class="true">
        <aop:aspect id="customAuditAspect" ref="customAudit">
            <aop:pointcut id="customAuditPointcut"
                          expression="@target(lombok.NoArgsConstructor)"/>
            <aop:before pointcut-ref="customAuditPointcut" method="customAuditUpdate"/>
        </aop:aspect>
</aop:config>

这是一个bean,上面提到的切入点是指:

<bean id="customAudit" class="com.socha.modules.inspektr.aspect.AuditCustomUpdateAspect"/>

这是一节课:

@Slf4j
@NoArgsConstructor
public class AuditCustomUpdateAspect {

    @Autowired
    JdbcTemplate jdbcTemplate;*


  public void customAuditUpdate() {
    log.warn("here I am");
  }
}

当我使用此功能部署Web应用程序时,它会以下列方式抱怨:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:
  Error creating bean with name 'dataSourceAudit'
  defined in ServletContext resource [/WEB-INF/spring-context/portlet-application-context.xml]:
  Unsatisfied dependency expressed through constructor parameter 0:
  Could not convert argument value of type [com.sun.proxy.$Proxy1719]
  to required type [com.zaxxer.hikari.HikariConfig]:
  Failed to convert value of type 'com.sun.proxy.$Proxy1719
  implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,org.springframework.cglib.proxy.Factory,com.zaxxer.hikari.HikariConfigMXBean,org.springframework.core.DecoratingProxy'
  to required type 'com.zaxxer.hikari.HikariConfig';

  nested exception is java.lang.IllegalStateException:
    Cannot convert value of type 'com.sun.proxy.$Proxy1719
    implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,org.springframework.cglib.proxy.Factory,com.zaxxer.hikari.HikariConfigMXBean,org.springframework.core.DecoratingProxy'
    to required type 'com.zaxxer.hikari.HikariConfig':
    no matching editors or conversion strategy found

下面我附加了这个bean及其所有依赖bean:

<bean id="inspektrTransactionTemplate"
      class="org.springframework.transaction.support.TransactionTemplate"
      p:transactionManager-ref="txManagerAudit" p:isolationLevelName="ISOLATION_READ_COMMITTED"
      p:propagationBehaviorName="PROPAGATION_REQUIRED"/>

<bean id="auditHikariCPConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="poolName" value="auditHikariCP"/>
</bean>

<bean id="dataSourceAudit" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
    <constructor-arg ref="auditHikariCPConfig"/>
</bean>

我或多或少了解AOP在Spring中是如何工作的。bean的类HikariDataSource实现了一些接口,默认情况下应用了JDK代理。在上面的代码片段中,我试图应用代理目标class=true,但仍然失败。我看到当我添加这个设置时,实现的接口发生了一些变化。springframework。cglib。代理工厂,但错误内容仍然相同。也许我最终无法将此设置应用于HikariDataSource bean,这就是它不起作用的原因?

提前感谢您的任何提示

共有1个答案

郭和硕
2023-03-14

正如R.G和Kriegaex所建议的那个样,通过缩小要建议的类的范围来解决这个特殊问题。错误停止发生

非常感谢。

 类似资料:
  • 我是SpringMVC的新人。我试图将我的核心Maven项目添加到Spring MVC Maven项目中。它成功地构建了,我可以在“target\project.war\WEB-INF\lib”中看到相应的jar文件,但它在glassfish控制台上引发了错误。 严重:部署应用程序时出现异常 我不能添加任何maven项目或jar文件。极有可能我没有做正确的添加依赖关系。如果有人能帮我。提前谢了。

  • 我添加了以下依赖项: 现在我得到了这个警告: 我试过用谷歌搜索,但什么也找不到。知道我应该改变什么吗?为什么?

  • 我已经在Cordova项目上创建了,但在添加平台时,它给了我以下错误: 将cordova fetch用于cordova android@6.3.0 错误:

  • 问题内容: 我有填充我的JList的方法,有没有一种方法可以添加JList中的每个项目? 问题答案: 您可以重写JList的getToolTipText(..)方法。 我相信您也可以使用自定义渲染器来调用setToolTipText(…)方法。

  • 当我将下面的依赖项添加到pom.xml时 以下错误来了 2018-05-31 12:02:38.217信息1416---[ost-startStop-1]j.LocalContainerEntityManagerFactoryBean:为持久化单元“默认”初始化JPA EntityManager工厂2018-05-31 12:01:39.233错误1416---[ost-startStop.1]o

  • 我在添加依赖项时遇到了丢失工件错误。我得到的错误是这样的: 所以我不知道我在这里错过了什么,有人能帮忙吗?多谢了。