【问题标题】:Spring injection of Service within another Service在另一个 Service 中 Spring 注入 Service
【发布时间】:2012-10-01 05:23:26
【问题描述】:

我正在尝试设置两个服务和一个控制器,如下所示:

控制器类:

@Controller
public class MyController {

   @Autowired
   IMyService1 service;
}

服务 2:

@Service
public class MyService2 implements IMyService2 {   }

服务 1:

@Service
public class MyService1 implements IMyService1 {

   @Autowired
   IMyService2 myService2;  // this bean is not getting created
}

beans.xml 中的所有内容都设置正确,以便在组件扫描中获取组件,并且所有内容都在同一个基础包下。

第一个服务已正确注入到 Controller 类中,但第二个服务未能注入 (BeanCreationException) 到第一个服务中。

有没有人遇到过这个问题或对我在这里可能做错了什么有任何想法/建议?

【问题讨论】:

  • 你试过@Resource(name = "myService2") 代替@Autowired 吗?
  • 您是否尝试过通过 contex.getBean(MyService2.class) 获取您的 MyService2?它会返回您的服务还是抛出异常?

标签: spring dependency-injection annotations javabeans


【解决方案1】:

我对该主题进行了一些研究,但找不到解决此问题的答案,我只能在没有 @Service 注释的情况下动态实例化第二个服务。

控制器:别碰,一样的

@Controller
public class MyController {
   @Autowired
   IMyService1 service;
}

服务 2: 从第二个服务中删除 @Service

public class MyService2 implements IMyService2 {
    public void doSomething() {
        // your code
    }
}

服务 1: 删除 @Autowired 并动态实例化您的第二个服务

@Service
public class MyService1 implements IMyService1 {
   public void actionWithService2() {
       new MyService2().doSomething();
   }
}

【讨论】:

    猜你喜欢
    • 2019-01-29
    • 2022-08-10
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多