在Abstract Class中声明的注释未加载

时间:2014-05-05 17:22:52

标签: java eclipse spring annotations

我使用Spring / Maven / Weblogic在Eclipse(Juno)中创建了一个动态Web项目。我还有一个Abstract类,我通过属性文件在其中注入一个属性(在setter上)。使用的注释是@Value(value =“$ {some.property}”) 出于某些奇怪的原因,当我通过maven将此项目部署到weblogic时,该属性将被注入到具体此类Abstract类的具体类中。但是,当我通过服务器将此项目直接部署到weblogic上时 - >添加部署,它无法注入属性。实际上,它确实为具体类上的所有其他注释注入属性,但忽略了抽象类的任何注释。 所以基本上这与编码无关,但似乎是某种配置问题。有没有人遇到类似的东西。感谢。

public abstract class MyAbstract {
    @Value(value="${myproperty1}")
    public void setMyValue(String myValue) {
        log.debug("setMyValue({})", myValue);
        this.myValue = myValue;
    }
}

public class MyConcrete {
    @Value(value="${myproperty2}")
    public void setMyValue2(String myValue2) {
        log.debug("setMyValue2({})", myValue2);
        this.myValue2 = myValue2;
    }
}

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。问题是这个特殊的bean有@Scheduled注释,因此不符合Bean Post Processing的条件。由于在此阶段设置了@Value属性,因此会跳过它们。相反,我将bean创建转移到我的应用程序上下文xml文件中,并从那里设置属性,例如。

<bean id="myConcrete" class="some.package.MyConcrete"
    p:value="${myproperty1}"
/>

现在,属性在正常的bean生命周期中被注入,即在Instantiation之后但在Bean Post Processor之前。