zoukankan      html  css  js  c++  java
  • Spring框架构造注入的属性问题type属性

    还是使用上面一个小demo,进行测试,验证一个问题,废话不多说了,上代码进行比较

     1 package service.impl;
     2 
     3 import service.UserService;
     4 import dao.UserDao;
     5 import entity.User;
     6 
     7 /**
     8  * 用户业务类,实现对User功能的业务管理
     9  */
    10 public class UserServiceImpl implements UserService {
    11 
    12     // 声明接口类型的引用,和具体实现类解耦合
    13     private UserDao dao;
    14     private String s1;
    15     private String s2;
    16     private int i1;
    17     
    18 
    19     // 生成无参构造方法
    20     public UserServiceImpl() {
    21 
    22     }
    23 
    24     // 带参数构造方法   为dao进行赋值
    25     public UserServiceImpl(UserDao dao) {
    26         this.dao = dao;
    27     }
    28     public UserServiceImpl(UserDao dao,String s1) {
    29         this.dao = dao;
    30         this.s1=s1;
    31     }
    32     public UserServiceImpl(String s2,UserDao dao) {
    33         this.dao = dao;
    34         this.s2=s2;
    35     }
    36     public UserServiceImpl(int i1,UserDao dao) {
    37         this.dao = dao;
    38         this.i1=i1;
    39     }
    40 
    41 
    42     public UserDao getDao() {
    43         return dao;
    44     }
    45 
    46     // dao 属性的setter访问器,会被Spring调用,实现设值注入
    47     public void setDao(UserDao dao) {
    48         this.dao = dao;
    49     }
    50 
    51     public void addNewUser(User user) {
    52         // 调用用户DAO的方法保存用户信息
    53         dao.save(user);
    54         System.out.println("s1="+s1);
    55         System.out.println("s2="+s2);
    56         System.out.println("i1="+i1);
    57     }
    58 }

    核心配置文件:

    <bean id="UserService" 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

  • 相关阅读:
    bzoj1568: [JSOI2008]Blue Mary开公司
    bzoj3301: [USACO2011 Feb] Cow Line
    bzoj4745: [Usaco2016 Dec]Cow Checklist
    bzoj4746: [Usaco2016 Dec]Lasers and Mirrors
    bzoj2982: combination
    bzoj1822: [JSOI2010]Frozen Nova 冷冻波
    bzoj1027: [JSOI2007]合金
    bzoj 2004
    bzoj 3110&&codevs 1616
    bzoj 2134
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12115500.html
Copyright © 2011-2022 走看看