我在做一个基本的spring mvc的例子
action是用注解的mvc。
接口public interface ITest {

public void say();}接口的实现类public class TestImpl implements ITest{ public void say() {
System.out.println("I am TestImpl");
}
}Action类的代码是@Controller
@RequestMapping("person")
public class UrAction extends JdbcTem{

private ITest test;

@RequestMapping("/say")
public String say(){
test.say();
return null;
} public ITest getTest() {
return test;
} public void setTest(ITest test) {
System.out.println("--注解--"+test);
this.test = test;
}
}配置文件的地方是<bean id="test" class="com.ur.action.TestImpl"></bean>

<bean id="urAction" class="com.ur.action.UrAction">
<property name="test" ref="test"></property>
</bean>服务器启动的时候,控制台打印出了如下信息,表示注解进去了
--注解--com.ur.action.TestImpl@c6f734但是我网址访问
http://127.0.0.1:8080/SprintTest/person/say.do
确是null异常。如果加上@Autowired,可以注解进去,但是我不想用注解的方式注入
请问各位高手,我该怎么办。javaspring

解决方案 »

  1.   

    不想用注解的方式,那就是想用配置的方式了?bean元素下<constructor-arg>或<property>元素
      

  2.   

    我都已经配了呀
    <bean id="test" class="com.ur.action.TestImpl"></bean>           <bean id="urAction" class="com.ur.action.UrAction">         <property name="test" ref="test"></property>     </bean>
      

  3.   

    null异常是你这里返回null的缘故吧,test即使实际是注入的。public String say(){
            test.say();
            return null;
    }
     
    试着换成return一个普通字符串呢因为我按相同配置测试,也是能注入的ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");

    UrAction urAction = (UrAction) factory.getBean("urAction");
    urAction.say();
      

  4.   

    不用注解楼主用什么spring mvc啊,用ssh算了,spring mvc的优点你一点都没用上.感觉不伦不类的!!!#3楼正解
      

  5.   

    依赖注入不需要设置get()方法
      

  6.   

    试试3楼, 看看6楼。   spring MVC 不用注解的方式的确有点那个啥...
      

  7.   

    springMVC简单例子我也做过,不过没有用过注解,都是用配置文件的。
      

  8.   

    难道是你的bean名字叫的有问题吗? 把test改成其它名字试试.或加个属性
    <property name="test" ref="test" autowire="byName"></property>
      

  9.   

    声明接口 bean  属性abstrct为true
    实现类 的bean  添加属性 parent  值为接口bean的ID
      

  10.   

    按照3楼的说法,很明显启动的时候没有加载到spring的配置文件在web.xml加上
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <!-改成你的spring配置文件-->
    <param-value>/WEB-INF/application.xml</param-value>
    </context-param>
      

  11.   

    我也遇到这样的问题了的!可能业务不同但是问题是很类似的!我本来在练习集成SSH的项目,在写的时候,struts还没有整合进去,先实现的是hibernate整合spring+servlet,在web启动的时候,dao与service中的bean都注入了,在发出请求时,action中的bean就是注入不了,始终未空,整了很久最后我把struts整合进去,结果问题解决了;最后分析可能是struts中的struts2-spring-plugin.jar起了最用,把action都交给了spring来管理;而使用servlet,action则没有交给spring来管理;如果用spring的mvc而不用注解的话,我猜spring不会管理action,所以每次发出请求时都为null;希望对你有帮助,我也是新手!
      

  12.   

    是的,虽然配置了,但是没加载到sprng容器中
      

  13.   

    这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。<bean id="userDao" class="..."/><bean id="userService" class="...">    <property name="userDao">      <ref bean="userDao"/>    </property></bean>这样你在userService里面要做一个userDao的setter/getter方法。但如果你用了@Autowired的话,你只需要在UserService的实现类中声明即可。@Autowiredprivate IUserDao userdao;