【问题标题】:Java Dependency Injection with parameters带参数的 Java 依赖注入
【发布时间】:2020-12-15 06:30:41
【问题描述】:

如果我有以下两个类 我们可以看到这是 SomeBean 的构造函数注入,但是 SomeBean 中的构造函数只有带有参数“String words”的构造函数,那么在依赖注入过程中,我们如何为依赖的构造函数指定参数?

@Component
public class SomeBean {
    private String words;

    public SomeBean(String words) {
        this.words = words;
    }

    public String getWords() {
        return words;
    }

    public void setWords(String words) {
        this.words = words;
    }

    public void sayHello(){
        System.out.println(this.words);
    }
}

@Service
public class MapService {
        private SomeBean someBean;

        @Autowired
        public MapService(SomeBean someBean) {
                this.someBean = someBean;
        }

        public MapService() {

        }

        public void sayHello(){
                this.someBean.sayHello();
        }
}

【问题讨论】:

  • 您可能需要使用@Bean 方法来定义您的SomeBean 对象。

标签: java spring dependency-injection


【解决方案1】:

对于基于 Java 的配置:

@Configuration 
public class SpringAppConfiguration {

    @Bean
    public SomeBean someBean() {
         return new SomeBean("value");
    }
}

对于 XML 配置:

<bean id="someBean" class="package.SomeClass">
    <constructor-arg index="0" value="some-value"/>
</bean>

查看此快速指南: https://www.baeldung.com/constructor-injection-in-spring

【讨论】:

    【解决方案2】:

    您应该将 SomeBean 类型的 Bean 添加到 Spring 配置类中。

    具有所需 Bean 的此类示例:

    @Configuration 
    public class Config {
        @Bean
        public SomeBean someBean() {
             return new SomeBean("words");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 2023-03-09
      • 1970-01-01
      • 2016-01-26
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多