[英]Spring dependency injection to a class with a constructor
我对整个 spring 依赖注入有点陌生。 有一件事我不明白,希望有人可以为我澄清......
我有一个服务:
@Service
public class Service {...}
另一个类:
public class A{
@Autowired
private Service service;
...
}
在这种情况下,Service 将按预期注入到 A 类中。 据我所知,A 类中不能使用构造函数,否则注入将不起作用。 有没有办法在 A 类中使用构造函数并同时注入 Service? IE:
public class A{
@Autowired
private Service service;
private String a;
private int b;
public A(String a,int b){
this.a = a;
this.b = b;
}
}
在这种情况下,我得到该服务为空,无论如何要解决这个问题? 我希望能够使用注入了服务的“new”从类型 A 创建一个对象,这可能吗?
谢谢。
有。 您应该在 Spring 配置类(用@Configuration
注释)中手动创建服务类的实例,并用@Service
而不是类来注释创建实例的方法。
因此,作为示例,您的应用程序可能具有如下所示的 Spring 配置:
@Configuration
public class MyApplicationConfig {
@Bean
public Service myService() {
return new Service("hello", "world", 42); // ctor args as an example
}
}
还有你的服务类:
// need fully qualified class because your class has the same name
@org.springframework.stereotype.Service
public class Service {
public Service(String prefix, String suffix, int number) {
// Whatever
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.