还是使用上面一个小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
原文地址:https://www.cnblogs.com/dongyaotou/p/12115500.html
时间: 2024-10-09 17:20:10