【问题标题】:Calling DAO class method through through Service class in main(String []args) method of Spring projectSpring项目的main(String []args)方法中通过Service类调用DAO类方法
【发布时间】:2015-07-15 12:28:03
【问题描述】:

我有一个包含以下类的 Spring 项目:

  1. Reporting.java
  2. IPersistenceService.java
  3. PersistenceService.java(实现 IPersistenceService)并具有@service 注解
  4. ReportingDAO.java:有方法 updateData()。 (新增)

    在 Reporting.java 中有一个 main(String []args) 方法,我必须从中调用 Reporting.java 的 updateData()。

Reporting.java:

@autowired
IPersistenceService persistenceService;

public static void main(String []args)
{
  ApplicationContext context = new ClassPathXMLApplicationContext(applicationContext.xml) // context has values populated in it.
  persistenceService.updateData(); // I am getting persistenceService as null here.
}

IPersistenceService.java
public void updateData();

@service
PersistenceService.java (implements IPersistenceService)
public void updateData()
{
  ReportingDAO reportingDao = new ReportingDAO ();
  reportingDao.updateData();
}

问题是我无法从我的 main() 类方法中调用 updateData() 方法。因为我得到了 persistenceService 的空值。

我不确定要在 applicationContext.xml 中添加什么。

提前致谢。

【问题讨论】:

  • 您的注释的大小写不正确,应该是 Autowired 和 Service。应用程序上下文是否设置了组件扫描?您应该包含 applicationcontext xml。此外,您的 ReportingDao 应该是 spring 管理的 bean。

标签: spring nullpointerexception main dao


【解决方案1】:

你的问题是你不能混合和匹配使用 Spring bean 工厂和调用 new。当你实例化一个对象时,它就脱离了 Spring 的控制。

要么将服务添加到你的 Spring 配置中,要么通过调用 new 实例化你需要的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多