当前位置: 首页 > 知识库问答 >
问题:

Spring:控制器中的这个字段是如何注入的?

边国安
2023-03-14

我有一个这样的Rest控制器:

@Slf4j
@RestController
@RequestMapping(...)
public class MyController {

private MyService service;

public MyController(MyService service){
   this.service = service;
}

服务类是一个组件:

@Component
public class MyService{
  ...
}

当我运行程序时,服务字段被正确注入。但是它是如何注入的(在构造函数上的zoni上也没有自动连线注释)?

我用的是SpringBoot 2.0。

共有1个答案

雍飞雨
2023-03-14

从Spring 4.3版本开始。根据文件(https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-bootspringbeans和依赖注入),如果bean只有一个构造函数,则可以省略@Autowired注释。

如果一个bean有一个构造函数,可以省略@Autowired,如下例所示:

@Service
public class DatabaseAccountService implements AccountService {

    private final RiskAssessor riskAssessor;

    public DatabaseAccountService(RiskAssessor riskAssessor) {
        this.riskAssessor = riskAssessor;
    }

    // ...

}
 类似资料:
  • 问题内容: 我是Angular的新手,正在尝试弄清楚该怎么做… 使用AngularJS,如何注入要在另一个控制器中使用的控制器? 我有以下片段: 执行此操作时,出现错误: 我是否应该尝试在另一个控制器内部使用一个控制器,还是应该将此服务用作服务? 问题答案: 如果您打算掌握已经实例化的另一个组件的控制器,并且如果您遵循的是基于组件/指令的方法,则始终可以遵循某个层次结构的另一个组件中的控制器(一个

  • 在spring mvc项目中,我想将@控制器注入到另一个bean中,如下所示: 这似乎不起作用,尽管@控制器注释是@组件的一种专门化,就像@服务(确实起作用)一样: 我还尝试直接从Application Context获取bean。 我希望避免讨论我为什么要注入控制器,以及我应该创建一个额外的抽象级别并注入它:)

  • 我有一个用于原型bean的FactoryBean,如下所示: 我希望在控制器中自动连接它,并且每当我尝试访问属性时(通过,从获得一个新的原型实例: 但是,这从来不会调用getObject()。如果我注入ApplicationContext一个直接访问bean,它就会工作,提供一个全新的属性bean: 如何直接使用@autowired注入来实现?

  • 是关于JavaFX的。当我想在Scene Builder中注入fx:id时,我会得到这样的警告: 在FXML控制器类中找不到id为'something'的可注入字段。 我想忽略它,并创建了一个函数,但它也不起作用。我创建了mainController类并将其添加到我的FXML文件中。以下是我的代码… MainController.java 我在我的旧项目中做了同样的事情,它们像一个魅力一样工作。但

  • 问题内容: 我阅读了一些带有基本示例的春季教程,并且对如何正确整理内容有些困惑。 麻烦在于,我想使用应用程序上下文来提取单例控制器引用,但是我读过其他一些主题,除非绝对必要,否则不应直接访问应用程序上下文。我想我应该使用构造函数实例化我想要的引用,但是在这里事情对我来说变得很模糊。 我有几个fxml文件的javafx应用程序。我有一个主要的fxml,其他主要是动态加载到main内部。 我将使用简化