【问题标题】:Spring annotations and XML configurationSpring注解和XML配置
【发布时间】:2012-03-22 06:39:10
【问题描述】:

我正在阅读 Spring 3.0 文档,然后我想到了这句话 -

注解注入在XML注入之前进行,因此是后者的配置 对于通过这两种方法连接的属性,将覆盖前者。

接下来我想到了一个问题: 如果我在 bean 中使用注解(如 @Service("myService")),现在我正在使用另一个 bean,它使用“myService”,“myService”将通过 XML 配置注入。

这行得通吗?我试过了,但它给了我

BeanCreationException(设置 bean 属性 'myService' 时无法解析对 bean 'myService' 的引用)

后来,我解决了这个问题Wiring Spring bean through annotations and xml context,但在解决方案中,它被告知“只要不指定所有带注释的字段,它们就会自动神奇地注入。” (我没有尝试过这个解决方案)

但是如果我想指定所有带注释的字段,就像我在上面指定的@Service 注释一样? 有什么建议吗??

【问题讨论】:

    标签: java spring


    【解决方案1】:

    我想出了答案,效果很好。实际上我忘了在 xml 配置中添加标签。我们需要在每个配置文件中添加此标签,即如果您已经为服务层 bean 编写了配置文件,请为服务层注释的 bean 添加标签。 dao 和控制器层类似。

    【讨论】:

      【解决方案2】:

      你需要像下面这样自动装配你的构造函数...

      @Autowired(required=true)
      public UserService(DataSource dataSource){
          this.userDS = new UserDS(dataSource);
      }
      

      所以,在上面的代码中,DataSource 会自动注入到UserService 中。

      【讨论】:

      • 废话。这个问题与构造函数注入无关。构造函数、方法和字段注入是做同样事情的三个不同版本,但是这个问题可以使用其中任何一个来解决。
      猜你喜欢
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 2016-10-13
      • 2014-07-11
      • 2012-09-20
      相关资源
      最近更新 更多