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

原文地址:https://www.cnblogs.com/dongyaotou/p/12115500.html

时间: 2024-10-09 17:20:10

Spring框架-构造注入的属性问题-type属性的相关文章

Struts2 配置文件result的name属性和type属性

Struts2 配置文件result的name属性和type属性:Name属性SUCCESS:Action正确的执行完成,返回相应的视图,success是 name属性的默认值: NONE:表示Action正确的执行完成,但并不返回任何视图: ERROR:表示Action执行失败,返回到 错误处理视图: INPUT:Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入的界面,一般在应用中,会对这些参数进 行验证,如果验证没有通过,将自动返回到该视图: LOGIN:Actio

04 Spring框架 依赖注入(一)

上一节我们讲了几个bean的一些属性,用来限制我们实例创建过后的状态. 但是细心的我们会发现其实上面demo创建的实例并不完整,对象创建出来过后只有一个方法,而没有包含其他信息(如属性). 之前我们说了Spring的核心是IOC,这是使用Spring其他组件的前提条件.这里我们做一下补充:Spring依赖IOC,而IOC依赖注入. 什么是注入? 注入就是在Spring主配置文件bean中添加一些信息使得新创建的实体类能够带有属性值(这里的属性值可以是其他实例的对象). 接下来就该看看注入有哪些方

移动端定制软键盘样式 配置input属性的type属性

1.当你的input输入的数据为链接地址时type属性可改为 type=url 最下面一栏就会出现.com 提高用户体验 2.当你的input输入的数据为email时type属性可改为 type=email 最下面一栏就会出现@符号 3.当你的input输入的数据为电话时type属性可改为 type=tel 软键盘就会显示这个样子. 4.当你的input输入的数据为电话时type属性可改为 type=number 显示介个样子

spring框架——依赖注入

依赖注入:DI 又称控制反转:IoC 项目名字spring_DI 一.implement包中定义了两个接口Food和Person 1.接口Food package org.interfaces; public interface Food { public String eat(); //food接口有被吃的方法待实现} 2.接口Person package org.interfaces; public interface Person { public void eatFood(); //人接

Spring框架第一天

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

3.Spring框架中的标签与配置文件分离

1.Spring框架中标签的配置 1. id属性和name属性的区别 * id -- Bean起个名字,在约束中采用ID的约束,唯一 * 取值要求:必须以字母开始,可以使用字母.数字.连字符.下划线.句话.冒号 id:不能出现特殊字符 * name -- Bean起个名字,没有采用ID的约束(基本不在使用) * 取值要求:name:出现特殊字符.如果<bean>没有id的话 , name可以当做id使用 * Spring框架在整合Struts1的框架的时候,Struts1的框架的访问路径是以/

Spring框架笔记(三)——Spring容器、属性注入和构造器注入详解

Spring 容器 在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用. Spring 提供了两种类型的 IOC 容器实现. BeanFactory: IOC 容器的基本实现. ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口. BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身: Appli

Spring注入值得2种方式:属性注入和构造注入

Spring是一个依赖注入(控制反转)的框架,那么依赖注入(标控制反转)表现在那些地方了? 即:一个类中的属性(其他对象)不再需要手动new或者通过工厂方法进行创建,而是Spring容器在属性被使用的时候给予注入. 注入有2种方式: 1. 属性注入:通过无参构造函数+setter方法注入 2. 构造注入:通过有参的构造函数注入. 优缺点: 1. 属性注入直白易懂,缺点是对于属性可选的时候,很多个构造函数会显得类很臃肿. 2. 构造注入是一种高内聚的体现,特别是针对有些属性需要在对象在创建时候赋值

Spring(3.2.3) - Beans(2): 属性注入 &amp; 构造注入

依赖注入是指程序运行过程中们如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入. 属性注入(Setter Injection) 属性注入是指 IoC 容器使用 Bean 属性的 setter 方法来注入 Bean 依赖的实例.使用属性注入应该为 Bean 提供一个无参的构造函数和属性的 setter 方法. <bean id="magicWand" class="com.huey.dream.bean.Weapon