Java Spring@EnableSpringConfigured不工作
我尝试使用@enablespringsconfigured,但它不起作用 Engine.javaJava Spring@EnableSpringConfigured不工作,java,spring,spring-aop,Java,Spring,Spring Aop,我尝试使用@enablespringsconfigured,但它不起作用 Engine.java @Component public class Engine { public void run() { System.out.println("Engine run"); } } Entity.java @Component @Configurable(autowire = Autowire.BY_TYPE) public class Entity {
@Component
public class Engine {
public void run() {
System.out.println("Engine run");
}
}
Entity.java
@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
@Component
public class EntityBuilder {
public Entity create() {
return new Entity();
}
}
EntityApplication.java
@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,希望看到“Engine run”,但实际结果总是“exec failure”
救命啊!代码在中,您将实体声明为spring组件,但在EntityBuilder create()方法中,您手动创建实体实例,这意味着 未使用由spring容器创建的实体对象。 那个么,如何将spring自动连接引擎实例到您自己的实体实例中呢。 每次
if(engine!=null)
变为false的原因。
如果将类声明为spring组件,spring容器将创建
为了得到正确的布线系统,我们需要为它们提供实例。如果这些类与连线连接,则不要创建自己的实例。只有在启用加载时间波动的情况下,Spring才能配置对象。您应该使用
@EnableLoadTimeWeaving
注释标记配置
您需要为可配置注释进行加载时编织或编译时编织您得到的异常是什么没有异常,只需输出“exec failure”@Arun Kumar mudraboyin您使用的spring版本是4.3.11.release,但我使用了@EnableSpringConfigured annotation,该支持旨在用于在任何容器控制之外创建的对象。因此,当我新建一个对象时,它应该是aop和自动连接的。但是我使用了@EnableSpringConfigured注释,该支持旨在用于在任何容器的控制之外创建的对象。因此,当我新建一个对象时,它应该是aop和自动连线。