当前位置:编程学习 > JAVA >>

spring 依赖注入的问题

spring不能自动实例化bean Spring Bean 实例 --------------------编程问答--------------------
<!-- 配置DAO组件 -->
<bean id="userDao" class="com.blog.dao.UserDaoImpl" />

<!-- 配置业务逻辑组件 -->
<bean id="userService" class="com.blog.service.UserServiceImpl">
<property name="userDao">
<ref bean="userDao"/>
</property>
</bean>

<!-- 配置RegisterAction -->
<bean id="register" class="com.blog.action.Register" scope="prototype">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>

<!-- 配置LoginAction -->
<bean id="login" class="com.blog.action.Login" scope="prototype">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>
applicationContent.xml配置如上
运行报错 --------------------编程问答-------------------- 那你 struts 配置文件怎么写的啊?是不是login ?
--------------------编程问答--------------------
引用 2 楼 ch656409110 的回复:
那你 struts 配置文件怎么写的啊?是不是login ?
<action name="login" class="com.blog.action.Login">
         
         <result name="input">/login.jsp</result>
         <result name="success">/success.jsp</result>
     </action>
     
     <action name="register" class="com.blog.action.Register">
       <result name="input">/register.jsp</result>
         <result name="success">/success.jsp</result>
         <result name="error">/register_error.jsp</result>
     </action>
--------------------编程问答-------------------- 把你的报错类发上来,带着行号,下次出问题记得贴全点 --------------------编程问答--------------------
引用 4 楼 xd1211 的回复:
把你的报错类发上来,带着行号,下次出问题记得贴全点
public class Login extends ActionSupport{
private UserService userService;
private String username;
private String password;

public UserService getUserService() {
return userService;
}

public void setUserService(UserService userService) {
this.userService = userService;
}

public String execute() throws Exception {
User user = new User();

user.setUsername(username);
user.setPassword(password);
//没有new一个对象时,报Exception occurred during processing request: null
//userService = new UserServiceImpl();
HttpServletRequest request = ServletActionContext.getRequest();
//System.out.println(user.getUsername());
if(userService.loginUser(user)){
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("username", username);
request.setAttribute("info", username+"登录成功!");
System.out.println("hello!");
return SUCCESS;
}

else
  return INPUT;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}



}
--------------------编程问答--------------------
引用 5 楼 yun00710 的回复:
Quote: 引用 4 楼 xd1211 的回复:

把你的报错类发上来,带着行号,下次出问题记得贴全点
public class Login extends ActionSupport{
private UserService userService;
private String username;
private String password;

public UserService getUserService() {
return userService;
}

public void setUserService(UserService userService) {
this.userService = userService;
}

public String execute() throws Exception {
User user = new User();

user.setUsername(username);
user.setPassword(password);
//没有new一个对象时,报Exception occurred during processing request: null
//userService = new UserServiceImpl();
HttpServletRequest request = ServletActionContext.getRequest();
//System.out.println(user.getUsername());
if(userService.loginUser(user)){
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("username", username);
request.setAttribute("info", username+"登录成功!");
System.out.println("hello!");
return SUCCESS;
}

else
  return INPUT;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}



}

你这是不是改源码了?,
43行?重新运行后的错误行是哪个? --------------------编程问答-------------------- 你struts的action 没交给spring管理? --------------------编程问答--------------------
引用 6 楼 xd1211 的回复:
Quote: 引用 5 楼 yun00710 的回复:

Quote: 引用 4 楼 xd1211 的回复:

把你的报错类发上来,带着行号,下次出问题记得贴全点
public class Login extends ActionSupport{
private UserService userService;
private String username;
private String password;

public UserService getUserService() {
return userService;
}

public void setUserService(UserService userService) {
this.userService = userService;
}

public String execute() throws Exception {
User user = new User();

user.setUsername(username);
user.setPassword(password);
//没有new一个对象时,报Exception occurred during processing request: null
//userService = new UserServiceImpl();
HttpServletRequest request = ServletActionContext.getRequest();
//System.out.println(user.getUsername());
if(userService.loginUser(user)){
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("username", username);
request.setAttribute("info", username+"登录成功!");
System.out.println("hello!");
return SUCCESS;
}

else
  return INPUT;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}



}

你这是不是改源码了?,
43行?重新运行后的错误行是哪个?
哦,我把注释删了,报错行if(userService.loginUser(user)) --------------------编程问答-------------------- 如果你想将action交由spring管理,那么struts.xml的<action>中的class属性值不能再是Action的全限定类名,而是
<bean id="login" class="com.blog.action.Login" scope="prototype">
        <property name="userService">
            <ref bean="userService"/>
        </property>
</bean>中的id值"login". --------------------编程问答-------------------- dao没有创建可能是由于你的sessionFactory没有创建好,你把后台的异常信息看全吧。或贴上来。 --------------------编程问答-------------------- 9搂的回复应该是对的,你在action想通过spring注入使用userService,那么你在struts.xml中配置action的实现类的时候就应该使用spring自动生成的实例化类,而不是内部自己创建的实例。把struts.xml中的class的值改成login试试 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 非常感谢上面各位的回答,问题找到了,缺少一个包 --------------------编程问答-------------------- 这个原因一般人还真的是找不到啊!!.. --------------------编程问答--------------------
引用 9 楼 wanghongtao0508 的回复:
如果你想将action交由spring管理,那么struts.xml的<action>中的class属性值不能再是Action的全限定类名,而是
<bean id="login" class="com.blog.action.Login" scope="prototype">
        <property name="userService">
            <ref bean="userService"/>
        </property>
</bean>中的id值"login".
请问“Action的全限定类名”这个是什么意思 --------------------编程问答-------------------- --------------------编程问答-------------------- <action name="login" class="com.blog.action.Login">这行有问题,class里现在不是直接指向具体的类路径,而是你在sptring里具体类对应的id,就是这个
<!-- 配置LoginAction -->
    <bean id="login" class="com.blog.action.Login" scope="prototype">
        <property name="userService">
            <ref bean="userService"/>
        </property>
    </bean>


解决办法:改为<action name="login" class="login">应该就可以了! --------------------编程问答-------------------- 除
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,