代码之家  ›  专栏  ›  技术社区  ›  Bekzod Keldiyarov

在不同的类中多次注入依赖项时,如何获得依赖项的一个实例?

  •  0
  • Bekzod Keldiyarov  · 技术社区  · 2 年前

    我需要获取OwnerService的一个实例,因为在Dataloader类中,我将一些数据加载到该实例,而在OwnerController类中,我必须获取加载的数据。但在OwnerController中没有数据。我打印出实例,并收到不同的实例ID

    数据加载器类

    public class DataLoader implements CommandLineRunner {
       private final OwnerService ownerService;
       public DataLoader() {
          ownerService = new OwnerServiceMap();
       }
       @Override
       public void run(String... args) throws Exception {
          System.out.println(ownerService);
       }
    }
    
    @RequestMapping("/owners")
    @Controller
    public class OwnerController {
        private final OwnerService ownerService;
    
        public OwnerController(OwnerService ownerService) {
            this.ownerService = ownerService;
        }
    
        @GetMapping({"", "/", "/index"})
        public String ownersIndex(Model model) {
            System.out.println(ownerService);
            model.addAttribute("owners", ownerService.findAll());
            return "owners/index";
        }
    }
    

    我需要几个注入类中的一个Bean实例。

    1 回复  |  直到 2 年前
        1
  •  0
  •   Jesper    2 年前

    在你们班 DataLoader ,你没有注射 OwnerService .相反,构造函数直接创建类的实例 OwnerServiceMap (这可能是一个实现接口的类 所有者服务 ):

    public DataLoader() {
        ownerService = new OwnerServiceMap();
    }
    

    相反,将其注入 数据加载器 ,与你在中国的做法完全相同 OwnerController :

    public DataLoader(OwnerService ownerService) {
        this.ownerService = ownerService;
    }