首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Spring注解有关问题

2012-09-23 
Spring注解问题Java code@Servicepublic class MessageUtil {...}@Controllerpublic class UserAction ext

Spring注解问题

Java code
@Servicepublic class MessageUtil {   ...}@Controllerpublic class UserAction extends ActionSupport{    private static final long serialVersionUID = 1L;        @Resource(type=MessageUtil.class)    private MessageUtil messageUtil;        public String addUser() throws Exception{        System.out.println("进入---------");        return messageUtil.sendMsg("ddif");    }    public MessageUtil getMessageUtil() {        return messageUtil;    }    public void setMessageUtil(MessageUtil messageUtil) {        this.messageUtil = messageUtil;    }}

上面的这段代码从action中取不到messageUtil,
java.lang.NullPointerException
com.xosou.web.action.system.UserAction.addUser(UserAction.java:27)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)

但是用Junit就可以取到
Java code
    @Test    public void testb() throws Exception{        String[] path = new String[] { "config/applicationContext.xml" };        ApplicationContext ac = new ClassPathXmlApplicationContext(path);        MessageUtil p = (MessageUtil) ac.getBean("messageUtil");        p.sendMsg("ab", null);    }


[解决办法]
接口注入,MessageUtil是一个类
[解决办法]
@Resource(type=MessageUtil.class) 换成@Autowire 看看 然后spring配置文件要加入自动去扫描你的MessageUtil上面的包
[解决办法]
换成@Autowire 是个正确的选择,而且你在xml文件中要加入

<context:component-scan base-package="*.*.*">
<context:include-filter expression="org.aspectj.lang.annotation.Aspect"
type="annotation" />
<context:exclude-filter expression="org.springframework.stereotype.Controller"
type="annotation" />
</context:component-scan>
其中*.*.*表示你的外层的package的结构,系统启动时,会对这个package下的注解进行自动注入
[解决办法]
给它一个空的构造方法 试试

热点排行