• 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

  • 相关阅读:
    『轉』windows文件的占用空间与文件大小
    『轉』asterisk入门连载二
    vm系統出現This Virtual Machine Appears To Be In Use的問題
    linux 7788
    鸿蒙开发板外设控制 之 实现按键“按下事件”和“释放事件”的通用框架(V0.0.1)
    【开发板试用报告】学习GPIO编程
    前言「HarmonyOS应用开发基础篇」
    【开发板试用报告】鸿蒙OS环境搭建及代码烧录
    动态设置和访问cxgrid列的Properties
    cxgrid导出excel
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12115500.html
Copyright © 2020-2023  润新知