我对整个春季依赖注入都有点新意。 有一件事我不明白,希望有人可以为我清楚......
我有服务:
@Service
public class Service {...}
另一堂课:
public class A{
@Autowired
private Service service;
...
}
在这种情况下,服务将按预期注入A类。 据我所知,你不能在A类中使用构造函数,否则注入将无效。有没有办法在A类中使用构造函数并同时注入Service? 即:
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类型的对象。注入服务,这可能吗?
感谢。
答案 0 :(得分:1)
有。您应该在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
}
}
答案 1 :(得分:0)