繁体   English   中英

在ApplicationContext(Spring)中声明的DAO类

[英]DAO class declared in ApplicationContext (Spring)

我一直在研究我所在的公司的一些现有代码,我看到的是applicationContext.xml文件将UserDAO类声明为bean,这很好但是在DAO类本身已经声明了getFromApplicationContext(ApplicationContext ctx)返回了DAO类本身的实例。 我无法理解调用此方法的位置,是谁调用它。 DAO类正在扩展HibernateDaoSupport类我怎么知道我必须在我的类中创建这个方法,因为如果我删除它,eclipse中的编译器不会抱怨。 我想说的是应该有一个接口或抽象类,它将迫使我编写这个方法。

public static UserDAO getFromApplicationContext(ApplicationContext ctx) {
    return (UserDAO) ctx.getBean("userDAO");
}

请任何能解释一下的人。

通常,您不应该引用应用程序上下文,尤其是在用户dao这么简单的事情上。

有关查找用法的一些提示:

  • 使用eclipse“调用层次结构”(CTRL + ALT + H)来查看调用方法的位置
  • 使用右键单击 - >引用 - >项目查看类的使用位置

如果它没有被使用,并且没有编译问题,并且xml配置中没有什么特别的东西(比如factory-method ) - 删除它。

如果这个方法没有在任何地方使用,我想你可以安全地删除它。 它看起来不像Spring自动调用的方法。 相反,它看起来像是一个实用工具方法,用于从应用程序上下文中获取UserDAO的实例。

这个方法很有用,因为它避免了对所有bean的名称进行硬编码,但是通常应该避免使用它,因为Spring的重点是使用依赖注入,从而避免像这样的bean查找。 应用程序上下文可用于在启动时获取一些根对象。 但是应该注入所有其他豆类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM