【spring】属性注入

【spring】属性注入【spring】属性注入

大家好,又见面了,我是你们的朋友全栈君。

      spring的属性注入是bean管理中的一个非常重要的内容,它可以通过有参数的构造函数注入属性,也可以通过set方法注入属性。包括基本类型的属性注入、对象类型的属性注入和复杂类型的属性注入。

一.基本类型

有参数构造

代码实现:

public class User{

	private String username;

	public User(String username) {
		this.username = username;
	}

	public void test1(){
		System.out.println("User....."+username);
	}	
}

spring配置文件实现:

        <!-- 使用有参数的构造注入属性 -->
        <bean id="user" class="cn.itcast.property.User">
        	<!-- 使用有参的构造注入 -->
        	<constructor-arg name="username" value="张三"></constructor-arg>
        </bean>

      有参数的构造函数注入属性的时候用的是<constructor-arg/>标签。

set方法设置

代码实现:

public class Book {

	private String bookname;
	//set方法
	public void setBookname(String bookname) {
		this.bookname = bookname;
	}
	
	public void demobook(){
		System.out.println("book......."+bookname);
	}	
}

spring配置文件实现:

        <!-- 使用set方法注入属性 -->
        <bean id="book" class="cn.itcast.property.Book">
        	<!-- 注入属性值 
        		name属性值:类里面定义的属性名称
        		value属性:设置具体的值 -->       	
        	<property name="bookname" value="Spring实战"></property>
        </bean>

      使用set方法注入属性时用的是<property/>标签。

二.对象类型

      我们在项目实战中,service一般都需要调用dao,这时候就需要把dao对象注入到service中。首先我们创建UserService和UserDao两个类,并在UserService类中定义UserDao类型的属性。

public class UserService {

	//1.定义dao类型属性
	private UserDao userDao;
	//生成set方法
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	public void add(){
		System.out.println("service.........");
		//在service里面得到dao类对象,才能调用dao里面的方法
		userDao.add();
	}
}
public class UserDao {

	public void add(){
		System.out.println("dao.........");
	}
}

      在配置文件中创建userService和userDao对象,并将userDao注入到userService中。

        <!-- 注入对象类型属性 -->
        <!-- 配置service和dao对象 -->
        <bean id="userDao" class="cn.itcast.ioc.UserDao"></bean>
        <bean id="userService" class="cn.itcast.ioc.UserService">
        	<!-- 注入dao对象
        		name属性值:service类里面属性名称
        		          字符串用value,对象用ref
        		ref属性:dao配置bean标签中id值 -->        	
        	 <property name="userDao" ref="userDao"></property>
        </bean>

三.复杂类型

      除了上面两种类型可以注入之外,还有复杂类型属性的注入,比如数组、list、map、properties等。

public class Person {

	private String[] arrs;
	private List<String> list;
	private Map<String,String> map;
	private Properties properties;

	public void setArrs(String[] arrs) {
		this.arrs = arrs;
	}
	public void setList(List<String> list) {
		this.list = list;
	}
	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	public void setProperties(Properties properties) {
		this.properties = properties;
	}
	
	public void test(){
		System.out.println("arrs:"+arrs);
		System.out.println("list:"+list);
		System.out.println("map:"+map);
		System.out.println("properties:"+properties);
	}
}
<!-- 注入复杂类型属性值 -->
        <bean id="person" class="cn.itcast.ioc.Person">
        	<!-- 数组 -->
        	<property name="arrs">
        		<list>
        			<value>张三</value>
        			<value>李四</value>
        			<value>王五</value>
        		</list>
        	</property>
        	<!-- list -->
        	<property name="list">
        		<list>
        			<value>Tom</value>
        			<value>Bob</value>
        			<value>Mary</value>
        		</list>
        	</property>
        	<!-- map -->
        	<property name="map">
        		<map>
        			<entry key="aa" value="小明"></entry>
        			<entry key="bb" value="小红"></entry>
        			<entry key="cc" value="小美"></entry>
        		</map>
        	</property>
        	<!-- properties -->
        	<property name="properties">
        		<props>
        			<prop key="driverclass">com.mysql.jdbc.Driver</prop>
        			<prop key="username">root</prop>
        		</props>
        	</property>
        </bean>

      今天介绍的都是通过配置文件来实现bean管理,而我们平时经常用的是通过注解来管理bean,所以接下来将为大家介绍注解方式的bean管理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105636.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 6种不同画法画平行线_「精品」漫画人物轮廓画法(精华版)「建议收藏」

    「教程」漫画人物脸部绘画基础part01脸部轮廓的画法(精修版)一、漫画线条与变形想要将人的脸或表情用自己的风格表现出来,需要抓住其特征,然后进行简单化、夸张化的变形,这是不可或缺的手段。在实际开始动笔画之前,关于如何变形要好好考虑清楚。01.简化主线用少量的线条画出角色的特征难度很高。刚开始练习的可以参考照片,拿真人的脸做练习,然后再逐步减少主线的线条,将画面简单化。①细碎的发丝归拢为…

  • 数据结构之哈希表(HASH)

    前言   当我们在编程过程中,往往需要对线性表进行查找操作。在顺序表中查找时,需要从表头开始,依次遍历比较a[i]与key的值是否相等,直到相等才返回索引i;在有序表中查找时,我们经常使用的是二分查找,通过比较key与a[i]的大小来折半查找,直到相等时才返回索引i。最终通过索引找到我们要找的元素。   但是,这两种方法的效率都依赖于查找中比较的次数。我们有一种想法,能不能不经过比较,而是

  • win7蓝屏错误代码对照表(windows蓝屏合集)

    windows蓝屏错误对照表00×00000000作业完成。10×00000001不正确的函数。20×00000002系统找不到指定的档案。30×00000003系统找不到指定的路径。40×00000004系统无法开启档案。50×00000005拒绝存取。60×00000006无效的代码。70×00000007储存体控制区块已毁。80×00000008储存体空间

  • ios应用接入微信开放平台

    ios应用接入微信开放平台

  • JAVA中运算符的详讲

    JAVA中运算符的详讲

  • pgsql数据库恢复_oracle多字段去重

    pgsql数据库恢复_oracle多字段去重概述今天主要介绍一下Oracle、MySQL、sqlserver、pg数据库在删除重复数据时是怎么实现的。这里用实例来说明。一、Oracle数据库去重1、环境准备可以看到“ALLEN”和“SMITH”这两个人的数据重复了,现在要求表中name重复的数据只保留一行,其他的删除。CREATETABLEhwb(idint,namevarchar(10));INSERTINTOhwbVALUES(1,’TOM’);INSERTINTOhwbVALUES(2

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号