从控制器中删除自动接线,并用常规初始化替换

时间:2019-04-04 05:30:19

标签: java annotations javabeans

我当前的代码包含@autowired,但是我想将其删除,然后使用代码对其进行初始化。如果您觉得难以理解,请拒绝我的问题,但请至少发表评论,以便我可以重新编辑,因为我是此注释材料的新手,但仍会弄湿我。

下面显示了我的代码,据我对自动装配的了解,它采用了“ Test”类中​​的值并将这些值连接到测试中。如果我从代码中删除此@autowired怎么办?我如何仍使其可执行?我的意思是,如果删除@autowired,如何仍可以在同一行中初始化值而不使用接线注释? -我想尝试这样做的原因是为了了解我的理解,同时看到更多不同的示例来改善我的困境

 @Autowired
  @Qualifier("testing")
  Test testing;

我没有预期的结果,因为我只想了解注释并查看我的理解是否正确。

1 个答案:

答案 0 :(得分:0)

有三种方法可以将自动关联(使用spring)注入到bean中:

  1. 自动装配字段本身

    @Autowired
    private Test test;
    
    @Autowired
    private SomethingService somethingService;
    
  2. 自动安装setter

    private Test test;
    private SomethingService somethingService;
    
    @Autowired
    public void setTest(Test test) {
        this.test = test;
    }
    
    @Autowired
    public void setSomethingService(SomethingService somethingService) {
        this.somethingService = somethingService;
    }
    
  3. 自动装配构造函数(不需要注释):

    public class Something {
    
        private Test test;
        private SomethingService somethingService;
    
        public Something(Test test, SomethingService somethingService) {
            this.test = test;
            this.somethingService = somethingService;
        }
    
        ...
    }
    

使用第三种方法的好处是,当您构造该类的实例进行测试时,可以传入想要的依赖项的任何实现。