@Service注解无法取到DAO对象

来源:互联网 发布:js 正则匹配标点符号 编辑:程序博客网 时间:2024/05/01 22:40

最近有一个项目。因为比较懒,我想直接在Model里面把数据给处理了,但是我遇见一个很奇怪的问题:
我在Model里面无法取到DAO对象!

这是当前代码:

@Service("justATest")
public class MQuestionBase {
@Resource
ScopeinfoDAO scopeinfoDAO;
private String findById(String tt) {
String result = (String) scopeinfoDAO
.getHibernateTemplate()
.find("sql")
.get(0);
}
}

此处爆出了一个空指针错误。我将Service里面的去掉。仍然是空指针。
百思不得其解。
我写了一个测试类。测试确是通过的:

package mybus.model;

import javax.annotation.Resource;
import mybus.dao.UserDAO;
import org.springframework.stereotype.Service;

@Service("ttt")
public class TestDAOGetting {
@Resource
UserDAO userDAO;
public String tt() {
System.out.println(userDAO == null);
return "success";
}
}


package test.service;

import javax.annotation.Resource;
import mybus.model.TestDAOGetting;
import mybus.service.inter.IDataInsertTest;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class T {
@Resource
TestDAOGetting uit;
@Before
public void init() {
System.out.println("initing ...");
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
uit = (TestDAOGetting) ac.getBean("ttt");
System.out.println("init over");
}
@Test
public void tets() {
System.out.println(uit.tt());
}
}

测试通过。无空指针。
我是想试着取SSH框架中一个被实例化的了DAO对象。我使用了下面这个方法;

scopeinfoDAO = 
ScopeinfoDAO.getFromApplicationContext(
new ClassPathXmlApplicationContext("classpath:applicationContext.xml"));

显然速度太慢了。
我换了一个:

ApplicationContext ctx = 
WebApplicationContextUtils
.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
scopeinfoDAO = (ScopeinfoDAO) ctx.getBean("ScopeinfoDAO");

也可以获得。但是我还是不明白那是一个什么情况。

当然,spring配置:
<context:component-scan base-package="mybus" />
实际没联系----毕竟上面那个测试类都通过了,而这个居然不能通过。。我很不能理解。


留个记号

0 0
原创粉丝点击