关于spring 注入为null的一些问题 10C

这是一个基于SSH框架的网站系统其中的登录模块,结果在登录的时候userserviceimpl始终是null
这个是DAO实现

package dao;

import entity.User;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
    //增加用户
    @Override
    public void addUser(User user){
        getHibernateTemplate().save(user);
    }

    //查询验证用户是否存在
    @Override
    public User findUser(User user){
        User user1 = new User();
        String hql = "from User user where user.username='"
                + user.getUsername() + "' and user.password= '"
                + user.getPassword() + "'";
        //将查询出的结果放到List
        List<User> userlist = getHibernateTemplate().findByExample(user);
        //判断是否有查询结果,换句话说就是判断用户是否存在
        if(userlist.size()>0){
            //取出查询结果的第一个值
            user1 = userlist.get(0);
        }
        return user1;
    }
}

userService

package service;

import dao.UserDAOImpl;
import entity.User;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    //注入对象UserDAO
    private UserDAOImpl userdaoimpl;
    public void setUserDAOImpl(UserDAOImpl userdaoimpl) {
        this.userdaoimpl = userdaoimpl;
    }
    //保存用户信息
    @Override
    public void addUser(User user){
        this.userdaoimpl.addUser(user);
    }
    //查找验证用户信息
    @Override
    public boolean findUser(User user){
        User user1 = this.userdaoimpl.findUser(user);
        //DAO查询中已经判断当用户名密码都存在时才返回user1,这里只用判断用户名是否存在就行
        if(user1.getUsername()!=null){
            return true;
        }else{
            return false;
        }
    }
}

LoginAction

package action;

import com.opensymphony.xwork2.ActionSupport;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import service.UserService;
import service.UserServiceImpl;

public class LoginAction extends ActionSupport{
    private User user;
    public void setUser(){
        this.user=user;
}
    private UserServiceImpl userserviceimpl;
    public void setUserServiceImpl(UserServiceImpl userserviceimpl) {
        this.userserviceimpl = userserviceimpl;
    }
    @Override
    public String execute() throws Exception{
        boolean flag = userserviceimpl.findUser(user);
        if (flag) {
            return SUCCESS;
        } else {
            return INPUT;
        }
    }
}

配置文件


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd ">

    <!-- dbcp连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" >
        <property name="driverClassName" value="com.mysql.jdbc.Driver">
        </property>
        <property name="url" value="jdbc:mysql://localhost:3306/user_db">
        </property>
        <property name="username" value="root">
        </property>
        <property name="password" value="1234">
        </property>
    </bean>

    <!--hibernate-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource">
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL55Dialect</prop>
                <prop key="hbm2ddl.auto">update</prop>
                <prop key="hibernate.connection.autocommit">true</prop>
            </props>
        </property>
        <property name="mappingResources">
            <list>
                <value>entity/User.hbm.xml</value>
            </list>
        </property>
    </bean>


    <!--使用属性注入-->
    <bean id="User" class="entity.User"></bean>
    <bean id="UserDAO" class="dao.UserDAOImpl" scope="singleton">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>

    <bean id="UserService" class="service.UserServiceImpl" scope="prototype">
        <property name="userDAOImpl" ref="UserDAO"></property>
    </bean>

    <bean id="action.RegistAction" class="action.RegistAction" scope="prototype">
        <property name="UserServiceImpl" ref="UserService"></property>
    </bean>

    <bean id="action.LoginAction" class="action.LoginAction" scope="prototype">
    <property name="UserServiceImpl" ref="UserService"></property>
    </bean>


</beans>


在LoginAction中 userserviceimpl总是null

0

3个回答

List<User> userlist = getHibernateTemplate().findByExample(user);
->
List<User> userlist = getHibernateTemplate().find(hql);
0

图片说明
能问下从哪里了解到的吗,从没看到过,我的理解是:bean的xml注入,ID属性是你要使用的注入名称,class属性指的是那个类或接口,scope指的是是否需要使用单利,默认单利,property是指的这个对象里面要引用的对象,也就是注入当前对象前需要某个对象支持,这就是DI(依赖注入),ref指的是另外一个注入bean的ID名称,name指的是在你当前对象里面的属性名称。
之后看你的:
(1)ID第一个之母小写,对象的一般规范吧,第二ID里面带点是什么鬼。
(2)属性名和注入名第一个字母小写小写,一般相同。
(3)借鉴下下DAO对象里面的sessionFactory的写法。
(4)一般对象用接口的名称就可以了,首字母小写。
你并没有注入属性名称也就是ID为userserviceimpl的对象,一点个人见解,不对勿怪。

0

我没记错配置service和dao在spring配置文件里面好像都是配置的接口类 不是实现类

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

8
select2 ajax 获取数据后 搜索功能 无效了 回答接近就有c币
6
select2 多选下拉框的选项 重复 当选中的值为多选项 str拼接做了两次for循环
4
Java 中redis存值后,取不到值 ,可以存到redis,但是取出key的值为null
3
Sping 构造方法注入 错误 java.lang.IllegalStateException: Failed to load ApplicationContext
2
spring boot整合redis获取异常或者获取不到
1
Spring的Environment必须通过实现EnvironmentAware接口才能注入吗
2
为什么使用@Autowired注入xml里的BasicDataSource会出现空指针异常?
1
@autowired注入mapper为null
0
java使用指令登陆telnet失败
3
Spring boot在非controller层使用@Autowired自动注入为null。(目录结构正确)
1
SpringBoot使用@Bean配置某个类后,如果该类出错返回null,如何让其他@Resource注入该Bean的地方不出错?
2
一开始自己配置的activiti的运行web时报错以为是环境的问题,后面到网上借鉴改了一些还是没用。
1
springboot JPA的DAO报错NullPointerException
5
Spring Boot中使用set注入方式将配置文件中值赋给静态变量失败
1
一个ssm项目只给了映射文件,需要我创建数据库,但是有些问题,
0
springboot下 shiro + redis 验证后无动作
1
There is no PasswordEncoder mapped for the id "null"
2
关于模板类(抽象类)使用@Transactional注解后,注入失效的问题
1
SSH框架搭建过程中遇到jsp页面的值无法传到action中的情况,求大神解答