首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @EnableSpringConfigured work

Spring @EnableSpringConfigured work
EN

Stack Overflow用户
提问于 2017-10-10 07:18:44
回答 2查看 1.7K关注 0票数 4

我试着使用@EnableSpringConfigured,但它不是工作。

Engine.java

代码语言:javascript
复制
@Component
public class Engine {

    public void run() {
        System.out.println("Engine run");
    }
}

Entity.java

代码语言:javascript
复制
@Component
@Configurable(autowire = Autowire.BY_TYPE)
public class Entity {

    @Autowired
    private Engine engine;

    public void exec() {
        if (engine != null)
            engine.run();
        else
            System.out.println("exec failure");
    }

}

EntityBuilder.java

代码语言:javascript
复制
@Component
public class EntityBuilder {

    public Entity create() {
        return new Entity();
    }
}

EntityApplication.java

代码语言:javascript
复制
@Configuration
@ComponentScan
@EnableSpringConfigured
public class EntityApplication {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EntityApplication.class);
        EntityBuilder builder = context.getBean(EntityBuilder.class);
        builder.create().exec();
    }
}

在同一个包中的上述四个java中,我尝试运行EntityApplication.java并期望看到“引擎运行”,但实际结果总是"exec失败“。

帮助!代码在https://github.com/lemonguge/spring/tree/master/spring-core/spring-aspect/src/main/java/cn/homjie/spring/aspect/newx

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-10 08:26:41

只有在启用加载时间波动时,Spring才能配置对象。应该用@EnableLoadTimeWeaving注释标记您的配置。

对于Configurable注释,您需要加载时编织或编译时编织。

票数 1
EN

Stack Overflow用户

发布于 2017-10-10 08:24:34

您将实体声明为spring组件,但在EntityBuilder create()方法中,您手动创建实体实例,这意味着您没有使用由spring容器创建的实体对象。那么,弹簧自动连接引擎实例如何进入您自己的实体实例。为什么每次if (engine != null)变得错误。如果您将类声明为spring组件,spring容器将为它们创建实例,为了获得正确的布线系统,我们需要它们。如果这些类与连线相连,不要创建自己的实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46660723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档