java - Spring 依赖注入(inject)到带有构造函数的类

标签 java spring spring-mvc dependency-injection

我对整个 spring 依赖注入(inject)有点陌生。 有件事我不明白,希望有人能为我澄清......

我有一项服务:

@Service
public class Service {...}

还有另一个类:

public class A{
   @Autowired
   private Service service;
   ...
}

在这种情况下,Service 将按预期注入(inject)到 A 类中。 据我所知,A类中不能使用构造函数,否则注入(inject)将无法进行。有没有办法在A类中使用构造函数并同时注入(inject)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 创建一个对象,并注入(inject)服务,这可能吗?

谢谢。

最佳答案

重要的是您的两个类都应该是 Spring bean。

这又意味着所有实例化都将由 Spring 容器完成。要了解如何正确处理基于构造函数的依赖注入(inject),请检查 ref doc 的这一点

如果为什么,您不能将类 A 设为 Spring bean,那么推荐的方法是使用 @Configurable 对其进行注释,这将在创建时 Autowiring 依赖项。

请注意,为此,您需要启用方面。我快速搜索了一下,发现了这个 blog这似乎很好地解释了细节

关于java - Spring 依赖注入(inject)到带有构造函数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39930654/

相关文章:

Spring Boot 在 SpringApplication.run 之前检查属性

java - Apache Tomcat 和 Apache TomEE 服务器未在 Eclipse 中运行 Web 项目

java - Java 如何将二进制数据输出到文件?

java - 如何防止子类默认实现父类(super class)的方法?

spring - 为什么我无法使用 Hibernate 5\Spring Data JPA 将数据类型为 "point"的数据库字段检索到这个 Spring Boot 项目中?

java - 是否可以用 JSR-330 @Scope 变体替换 Spring @Scope ("request")?

Java 注释来自接口(interface)或父类(super class)的函数

java - Playframework 2.5.0 : Unable to serve server-side generated zip file

java - 如何使用 spring 注释检查字符串是否为整数?

java - 如何获取嵌套 JSTL c :forEach from JSP to JS 的索引