当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    Spring框架构造注入type属性实例详解

    栏目:win服务器问题汇总 时间:2020-01-01 10:57

    这篇文章主要介绍了Spring框架构造注入type属性实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    进行测试,验证一个问题,废话不多说了,上代码进行比较

    package service.impl;
    
    import service.UserService;
    import dao.UserDao;
    import entity.User;
    
    /**
     * 用户业务类,实现对User功能的业务管理
     */
    public class UserServiceImpl implements UserService {
    
      // 声明接口类型的引用,和具体实现类解耦合
      private UserDao dao;
      private String s1;
      private String s2;
      private int i1;
      
    
      // 生成无参构造方法
      public UserServiceImpl() {
    
      }
    
      // 带参数构造方法  为dao进行赋值
      public UserServiceImpl(UserDao dao) {
        this.dao = dao;
      }
      public UserServiceImpl(UserDao dao,String s1) {
        this.dao = dao;
        this.s1=s1;
      }
      public UserServiceImpl(String s2,UserDao dao) {
        this.dao = dao;
        this.s2=s2;
      }
      public UserServiceImpl(int i1,UserDao dao) {
        this.dao = dao;
        this.i1=i1;
      }
    
    
      public UserDao getDao() {
        return dao;
      }
    
      // dao 属性的setter访问器,会被Spring调用,实现设值注入
      public void setDao(UserDao dao) {
        this.dao = dao;
      }
    
      public void addNewUser(User user) {
        // 调用用户DAO的方法保存用户信息
        dao.save(user);
        System.out.println("s1="+s1);
        System.out.println("s2="+s2);
        System.out.println("i1="+i1);
      }
    }

    核心配置文件:

    <bean  class="service.impl.UserServiceImpl">
    <!--通过构造函数的方式,实现构造注入 -->
    <constructor-arg>
      <ref bean="userDao" />
    </constructor-arg>
    <constructor-arg>
      <value>123</value>
    </constructor-arg>
    </bean>

    运行结果:

    保存用户信息到数据库
    s1=null
    s2=123
    i1=0

    由此可见,是没有附上值的 ,为i1变量

    解决办法:对核心配置文件进行修改,使用type属性,指定数据类型

    运行结果:

    保存用户信息到数据库
    s1=null
    s2=null
    i1=123

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。