弹簧&x27;s加载时间编织的spring托管bean,是否存在冲突?

弹簧&x27;s加载时间编织的spring托管bean,是否存在冲突?,spring,aop,aspectj,spring-aop,Spring,Aop,Aspectj,Spring Aop,我的项目已经使用 我的LTW配置似乎是正确的,因为我已经打开了verbose和debug weaver选项,我在catalina.out中看到了类似的行 2013-11-28 13:17:57,167+0000 [INFO ] org.springframework.context.weaving.DefaultContext LoadTimeWeaver [main] - Using a reflective load-time weaver for class loader: org.spr

我的项目已经使用

我的LTW配置似乎是正确的,因为我已经打开了verbose和debug weaver选项,我在catalina.out中看到了类似的行

2013-11-28 13:17:57,167+0000 [INFO ] org.springframework.context.weaving.DefaultContext LoadTimeWeaver [main] - Using a reflective load-time weaver for class loader: org.springframework.instrument.classloading.tomcat .TomcatInstrumentableClassLoader
[TomcatInstrumentableClassLoader@53ea0105] info register aspect com.anon.profiling.aspect.MyAspect
...
[TomcatInstrumentableClassLoader@273d1402] debug not weaving 'org.quartz.SimpleTrigger'
[TomcatInstrumentableClassLoader@273d1402] debug not weaving 'org.apache.http.conn.scheme.SocketFactory'
...
我想要插入的类与其他几个类在一个包中,我可以看到该包中的其他类正在以与未编织的相同的方式进行调试。但是大约有一半的课程(包括我感兴趣的课程)根本没有被提及——要么是因为没有被编织,要么被忽略,要么是因为其他原因。稍微深入一点,我想我发现了一种被忽略的类由Spring管理的模式:要么在applicationContext.xml中声明,要么用@Inject注入到另一个类中

是不是TomcatInstrumentableClassLoader不会加载spring管理的bean进行编织?我需要在配置中添加一些东西来启用它吗

--雷切尔

编辑:响应@gadget

aop.xml

<aspectj>

    <!-- "includes" required in order to use both Spring AOP as well as AspectJ Load Time Weaving where Proxied classes are not possible eg. MarkLogicClient -->
    <weaver options="-verbose -showWeaveInfo -Xset:weaveJavaxPackages=true">
        <!-- only weave classes in the following packages -->
        <include within="mycompany..*"/>
        <include within="javax.*"/>
    </weaver>

</aspectj>

applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
       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.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <context:component-scan base-package="mycompany.appname"/>

    <context:annotation-config/>

    <aop:aspectj-autoproxy proxy-target-class="true"/>

    <context:load-time-weaver/>


    <!-- bean declarations normally here, removed for brevity -->

</beans>

xml(抱歉,它有点长,但我不想删除任何内容,以防它很重要)


appname
log4jConfigLocation
类路径:log4j.properties
服务状态
org.springframework.web.servlet.DispatcherServlet
4.
org.springframework.web.context.ContextLoaderListener
上下文配置位置
类路径:spring/*.xml
泽西servlet
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.api.json.POJOMappingFeature
真的
com.sun.jersey.spi.container.ResourceFilters
mycompany.appname.security.ResourceFilterFactory
com.sun.jersey.config.property.WadlGeneratorConfig
mycompany.appname.jersey.Isite2WadlGeneratorConfig
1.
泽西servlet
/*
服务状态
/服务状态
WebApprotKey
登录中
属性配置
类路径:spring/propertiesConfigContext.xml
utf8ValidatingFilter
mycompany.appname.filter.Utf8ValidatingFilter
utf8ValidatingFilter
/*
定时滤波器
mycompany.appname.filter.timeingfilter
定时滤波器
/*
mycompany.appname.log.EnvironmentalPropertiesLog4jContextListener

很可能您正在使用多个Spring上下文和不同的类加载器,并且尚未在所有这些类加载器上设置weaver代理。您可以发布您的xml配置,或者描述层次结构吗?如果可以添加aop.xml和applicationContext.xml,您还需要查看其他内容吗?web.xml、pom.xml?aop.xml和applicationContext.xml将非常有用,而web.xml只是为了查看如何加载context@gadget:也添加了web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <display-name>appname</display-name>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <servlet>
        <servlet-name>servicestatus</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>4</load-on-startup>
    </servlet>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/*.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>jersey-servlet</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
            <param-value>mycompany.appname.security.ResourceFilterFactory</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.config.property.WadlGeneratorConfig</param-name>
            <param-value>mycompany.appname.jersey.Isite2WadlGeneratorConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>servicestatus</servlet-name>
        <url-pattern>/servicestatus</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>logging</param-value>
    </context-param>

    <context-param>
        <param-name>propertiesConfigLocation</param-name>
        <param-value>classpath:spring/propertiesConfigContext.xml</param-value>
    </context-param>

    <filter>
        <filter-name>utf8ValidatingFilter</filter-name>
        <filter-class>mycompany.appname.filter.Utf8ValidatingFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>utf8ValidatingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>timingFilter</filter-name>
        <filter-class>mycompany.appname.filter.TimingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>timingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>mycompany.appname.log.EnvironmentalPropertiesLog4jContextListener</listener-class>
    </listener>

</web-app>