我是初次启动的新手,我需要知道如何在需要实例化参数的属性中使用@autowired。 请记住以下说明性情况。它会是这样的:
public class MyClassA{
public SpecificClass myMethod(){
//some logic
}
}
public class MyClassB extends MyClassA{
@Autowired
MyComponent myComponent (myMethod()); //here is my doubt, because my component needs a parameter to be built
}
@Component
public class MyComponent{
public MyComponent(SpecificClass foo){
this.foo=foo;
}
答案 0 :(得分:1)
如果你的目的是使用依赖注入,这不是真正合适的设计。不应该像这样直接依赖于超类的方法。按照你应该的方式间接注入依赖关系会产生类似下面的内容
GET /restapi/v2/accounts/<accountId>/envelopes/<envelopeId>/documents/101275804
答案 1 :(得分:1)
@Autowired只告诉Spring将组件注入构造函数,字段或方法参数。在此之前,注入的组件由bean容器实例化。我假设你正在寻找的是一种创建MyComponent的方式,它也会接收一个Spring Bean。 在您的示例中,您可以使用以下
实现此目的@Configuration
public class MyClassA{
@Bean //the bean would have the name 'myMethod', so maybe change that
public SpecificClass myMethod(){
//some logic
}
}
//this needs to be a component, service, ...
@Component
public class MyClassB {
@Autowired
MyComponent myComponent;
}
@Component
public class MyComponent{
@Autowired //Spring wires the Bean 'myMethod' in here, autowired is not needed in the latest Spring Versions
public MyComponent(SpecificClass foo){
this.foo=foo;
}
}
这是一个基本的Spring问题,并不是特定于Spring Boot。为了更好地理解布线,您可以查看Spring 4 Framework Reference Documentation。