Java Spring@Autowired参数

Java Spring@Autowired参数,java,spring,spring-mvc,dependency-injection,autowired,Java,Spring,Spring Mvc,Dependency Injection,Autowired,我在春季试图理解@Autowired注释时遇到了一些困难 正如我现在所理解的,在某些情况下,如果我在保存bean的xml文件中声明这个变量类,那么我可以在实例变量上声明@Autowired 在这种情况下,正如我所理解的,我不必实例化bean,因为它们将被Spring自动声明。我不明白的是: 例如,我可以在xml中声明一个或多个作为参数获取连接的DAOBean,但是如果我必须使用连接的同一实例进行不同的DAO操作(例如,让用户请求用户DAO,然后使用另一个DAO进行另一个操作) 在构造函数或se

我在春季试图理解
@Autowired
注释时遇到了一些困难

正如我现在所理解的,在某些情况下,如果我在保存bean的xml文件中声明这个变量类,那么我可以在实例变量上声明
@Autowired

在这种情况下,正如我所理解的,我不必实例化bean,因为它们将被Spring自动声明。我不明白的是:

  • 例如,我可以在xml中声明一个或多个作为参数获取连接的DAOBean,但是如果我必须使用连接的同一实例进行不同的DAO操作(例如,让用户请求用户DAO,然后使用另一个DAO进行另一个操作)
  • 在构造函数或setter方法中设置
    @Autowired
    注释有什么区别

要在DAO中注入连接对象,所有这些对象都必须是SpringBean(在xml中声明)。默认情况下,所有Springbean都是单例的,因此两个不同的DAO将共享同一个连接实例


关于第二个问题,您有第三个选项,@Autowired在字段级别。您应该使用的是主观的,但这篇文章很好地解释了差异,它交叉链接了许多关于这个主题的其他文章

,我的拙见是:我从来没有将连接声明为参数,但总是使用注释
@Transactional
(为您处理整个事务)。我甚至不知道可以在setter方法上使用@Autowired。我总是在课堂上使用
@Autowired
,它总是适合我的需要。谢谢,我现在就看。谈到第一个问题,我显然不想让我的关系成为一个单身的班级,所以我认为我不能这样继续下去。欢迎。说到单例,它始终是一个需求和设计的问题,但一般来说,将连接对象设置为单例被认为是一个好的实践。这里解释了不使用框架的典型实现。Spring很好地补充了这一点,通过依赖注入来释放耦合,这只是一个小小的补充:Pivotal不建议在他们的官方培训课程(SpringCore)中进行现场注入,因为这会增加单元测试的难度。所以要么使用方法注入(在setter上)要么使用构造函数注入。下面是奥利弗·吉尔克(Oliver Gierke)的一篇有趣的文章: