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

这是一个基于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

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

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

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