Spring笔记整理3(多种类型注入)

多种类型注入
CollectionBean与CarBean,省略setget以及toString方法

public class CollectionBean {
	private Object [] arr;//数组类型注入
	private List list; //list/set类型注入
	private Map map;//map类型注入
	private Properties prop;//properties类型注入
	}
public class Car {
		private String name;
		private String color;
		}

获得容器:

public class Demo {
	@Test	
	public void fun1(){
			//1创建容器对象
			ApplicationContext  ac=new ClassPathXmlApplicationContext("cn/itheima/c_injection/applicationContext.xml");
			//2向容器要User对象
			User u = (User) ac.getBean("user");
			//打印user对象
			System.out.println(u);
		}
	
	@Test	
	public void fun2(){
			//1创建容器对象
			ApplicationContext  ac=new ClassPathXmlApplicationContext("cn/itheima/c_injection/applicationContext.xml");
			//2向容器要User对象
			User u = (User) ac.getBean("user2");
			//打印user对象
			System.out.println(u);
		}
	
	@Test	
	public void fun3(){
			//1创建容器对象
			ApplicationContext  ac=new ClassPathXmlApplicationContext("cn/itheima/c_injection/applicationContext.xml");
			//2向容器要User对象
			User u = (User) ac.getBean("user3");
			//打印user对象
			System.out.println(u);
		}
	
	@Test	
	public void fun4(){
			//1创建容器对象
			ApplicationContext  ac=new ClassPathXmlApplicationContext("cn/itheima/c_injection/applicationContext.xml");
			//2向容器要User对象
			User u = (User) ac.getBean("user4");
			//打印user对象
			System.out.println(u);
		}
	@Test	
	public void fun5(){
			//1创建容器对象
			ApplicationContext  ac=new ClassPathXmlApplicationContext("cn/itheima/c_injection/applicationContext.xml");
			//2向容器要User对象
			CollectionBean cb = (CollectionBean) ac.getBean("cb");
			//打印user对象
			System.out.println(cb);
		}
}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns="http://www.springframework.org/schema/beans" 
		xmlns:p="http://www.springframework.org/schema/p" 
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">


	<!-- set方式注入 -->
	<bean name="user"  class="cn.itheima.bean.User">
		<!-- 值类型注入:为User对象中名为name的属性注入tom作为值 -->
		<property name="name" value="tom"></property>
		<property name="age" value="18"></property>
		<!-- 为car属性注入下方配置的car属性 -->
		<property name="car"  ref="car"></property>
	</bean>
	
		<!-- 引用类型注入:将car对象配置到容器中 -->
		<bean name="car" class="cn.itheima.bean.Car">
			<property name="name" value="兰博基尼"></property>
			<property name="color" value="黄色"></property>
		</bean>
<!-- ============================================================================================ -->
	<!-- 构造函数注入 -->
	<bean  name="user2" class="cn.itheima.bean.User">
		<!-- name属性:构造函数的参数名 -->
		<!-- index属性:构造函数的参数索引 -->
		<!-- type属性:构造函数的参数类型 -->
		<constructor-arg name="name"  index="0" type="java.lang.Integer" value="999" ></constructor-arg>
		<constructor-arg name="car"  index="1" ref="car"></constructor-arg>
	</bean>
<!-- ============================================================================================ -->
	
	<!-- p名称空间注入,走set方法
	1.导入p名称空间xmlns:p="http://www.springframework.org/schema/p" 
	2.使用p:属性完成注入
		值类型:p:属性名="值"
		对象类型:p:属性名-ref="bean名称"
	 -->
	<bean name="user3"  class="cn.itheima.bean.User" p:name="jack" p:age="20" p:car-ref="car">
		
	</bean>
<!-- ============================================================================================ -->

	<!-- 
		spel注入:spring Expression  language spring表达式语言
	 -->
	 <bean name="user4"  class="cn.itheima.bean.User">
		<property name="name" value="#{user.name}"></property>
		<property name="age" value="#{user3.age}"></property>
		<property name="car" ref="car"></property>
	</bean>
<!-- ============================================================================================ -->

	<!-- 复杂类型注入 -->
	 <bean  name="cb" class="cn.itheima.c_injection.CollectionBean">
	 	<!-- 如果数组中只准备注入一个值(对象),直接使用value|ref即可
	 	<property name="arr" value="tom"></property>
	 	 -->
	 	 
	 <!-- array注入,多个元素注入 -->
	 	<property name="arr">
	 		<array>
	 			<value>tom</value>
	 			<value>jerry</value>
	 			<ref  bean="user4"/>
	 		</array>
	 	</property>
	 	<!-- 如果list中只准备注入一个值(对象),直接使用value|ref即可
	 	<property name="list" value="jack"></property>
	 	-->
	 	<property name="list">
	 		<list>
	 			<value>jack</value>
	 			<value>rose</value>
	 			<ref  bean="user3"/>
	 		</list>
	 	</property>
	 
	 	<!-- map类型注入 -->
	 	<property name="map">
	 		<map>
	 			<entry key="url" value="jdbc:mysql:///crm"></entry>
	 			<entry key="user" value-ref="user4"></entry>
	 			<entry key-ref="user3" value-ref="user2"></entry>
	 		</map>
	 	</property>
	 	
	 	<!-- propeties 类型注入 -->
	 	<property name="prop">
	 		<props>
	 			<prop key="driverClass">com.jdbc.mysql.Driver</prop>
	 			<prop key="userName">root</prop>
	 			<prop key="password">1234</prop>
	 		</props>
	 	</property>
	 </bean>
</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值