2

次のスプリング構成で問題に直面しています。txn:annotation を単独で使用すると正常に動作しますが、AOP を使用しようとすると例外が発生します。

Spring 構成ファイルの一部:

 <tx:annotation-driven transaction-manager="transactionManager"  
      proxy-target-class="true"/>   
 <aop:aspectj-autoproxy   >
   <aop:include name="logging"/>
 </aop:aspectj-autoproxy>
 <bean id="dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
 ....
 </bean>
 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource">
 </bean>
<!--Aspect Annotation class-->
<bean id="logging" class="com.aop.LoggingAspect"></bean>
 <!--Rest only other simple Business/DAO beans-->

例外:

 org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0': Bean with name 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0' has been injected into other beans [org.springframework.transaction.config.internalTransactionAdvisor] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

スプリングの設定が間違っているかもしれませんが、参考にしてください。


.getElementsByTagName('ul')任意の DOM 要素で実行できます。たとえば、次の HTML を使用します。

<form id="form_id">
    <input name="form_element"/>
    <ul>
        <li>foo</li>
        <li>bar</li>
    </ul>
</form>

これを行う:

var form = document.getElementById('form_id');
form.form_element.value = 'hello world';

var ul = form.getElementsByTagName('ul');
ul = ul && ul[0];
console.log(ul);

var lis = form.getElementsByTagName('li');
for (var i = 0; i < lis.length; i++) {
    console.log(lis[i].innerText);
}

jsFiddle はこちら: http://jsfiddle.net/YSpVg/1/

4

1 に答える 1

1

Bean の定義が表示されませんが、循環依存関係があるようです。豆の名前は、問題があなたの豆ではなく春の豆で発生することを示唆しているため、問題を引き起こす方法で物事を定義していると思います。私の推測では、XML で定義された定義と、注釈で定義された定義があると思います。たとえば、@Transactionalアノテーションを使用してクラスを定義し、同じクラスに対して XML を使用してアスペクトを定義します。

于 2013-07-03T08:19:47.017 に答える