• 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

  • 相关阅读:
    伴郎
    MySQL出现Waiting for table metadata lock的场景浅析
    相同name,取最小的id的值,mysql根据相同字段 更新其它字段
    Sequence contains no elements
    Check if List<Int32> values are consecutive
    comparison of truncate vs delete in mysql/sqlserver
    Are query string keys case sensitive?浏览器种输入url附带的参数是否区分大小写
    Understanding Action Filters (C#) 可以用来做权限检查
    糖果缤纷乐攻略
    DNGuard HVM Unpacker(3.71 trial support and x64 fixed)
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12115500.html
Copyright © 2020-2023  润新知