zoukankan      html  css  js  c++  java
  • Spring之三种依赖注入,给各种集合类型的属性注入值

    一、第一种注入(set注入):

    创建实体类,Teacher:

    package org.ruangong.entity;
    
    public class Teacher {
    	private String name;
    	private int age;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	
    }
    

      创建实体类,Course:

    package org.ruangong.entity;
    
    public class Course {
    	private String cname;
    	private int chour;
    	private Teacher teacher;
    	public String getCname() {
    		return cname;
    	}
    	public void setCname(String cname) {
    		this.cname = cname;
    	}
    	public int getChour() {
    		return chour;
    	}
    	public void setChour(int chour) {
    		this.chour = chour;
    	}
    	public Teacher getTeacher() {
    		return teacher;
    	}
    	public void setTeacher(Teacher teacher) {
    		this.teacher = teacher;
    	}
    	@Override
    	public String toString() {
    		return "Course [cname=" + cname + ", chour=" + chour + ", teacher=" + teacher.getName() + teacher.getAge()+"]";
    	}
    	
    }
    

      在applicationContext.xml文件中添加bean标签。

    <bean id="teacher" class="org.ruangong.entity.Teacher">
    		<property name="name" value="王建民"></property>
    		<property name="age" value="50"></property>		
    	</bean>
    	<bean id="course" class="org.ruangong.entity.Course">
    		<property name="cname" value="java"></property>
    		<property name="chour" value="2"></property>
    		
    		<property name="teacher" ref="teacher"></property>
    	</bean>
    

      其中的ref=“”,对应对象值。将teacher对象注入到course对象中。

    二、第二中注入(构造器注入):

    在Teacher实体中添加构造方法。

    public Teacher(String name, int age) {
    		super();
    		this.name = name;
    		this.age = age;
    	}
    

      在Course实体中添加构造方法:

    public Course(String cname, int chour, Teacher teacher) {
    		super();
    		this.cname = cname;
    		this.chour = chour;
    		this.teacher = teacher;
    	}
    

      在之前的applicationContext.xml文件的id为teacher和course标签重新添加构造方法。

    <bean id="teacher" class="org.ruangong.entity.Teacher">
    	<!-- 通过set注入 -->
    		<!-- <property name="name" value="王建民"></property>
    		<property name="age" value="50"></property>	 -->
    	<!-- 通过构造器注入 -->
    		<constructor-arg value="刘丹"></constructor-arg>
    		<constructor-arg value="48"></constructor-arg>
    		
    	</bean>
    	<bean id="course" class="org.ruangong.entity.Course">
    	<!-- 通过set注入 -->
    		<!-- <property name="cname" value="java"></property>
    		<property name="chour" value="2"></property>		
    		<property name="teacher" ref="teacher"></property> -->
    	<!-- 通过构造器注入 -->
    		<constructor-arg value="PHP"></constructor-arg>
    		<constructor-arg value="5"></constructor-arg>
    		<constructor-arg ref="teacher"></constructor-arg>
    			
    	</bean>
    

      <constructor>的value顺序和构造方法的属性值严格一致。

    或者可以在constructor标签的后面添加index="key",key值来控制属性顺序。

    或者添加name="key",key来控制属性名。

    三、第三种注入(P值注入)

     生成P的标签。

    <bean id="teacher" class="org.ruangong.entity.Teacher" p:name="刘立嘉" p:age="60">
    	<!-- 通过set注入 -->
    		<!-- <property name="name" value="王建民"></property>
    		<property name="age" value="50"></property>	 -->
    	<!-- 通过构造器注入 -->
    		<!-- <constructor-arg value="刘丹"></constructor-arg>
    		<constructor-arg value="48"></constructor-arg> -->
    		
    	</bean>
    	<bean id="course" class="org.ruangong.entity.Course" p:cname="统一建模" p:chour="6" p:teacher-ref="teacher">
    	<!-- 通过set注入 -->
    		<!-- <property name="cname" value="java"></property>
    		<property name="chour" value="2"></property>		
    		<property name="teacher" ref="teacher"></property> -->
    	<!-- 通过构造器注入 -->
    		<!-- <constructor-arg value="PHP"></constructor-arg>
    		<constructor-arg value="5"></constructor-arg>
    		<constructor-arg ref="teacher"></constructor-arg> -->
    			
    	</bean>
    

      四、集合类型值注入:

    创建集合实体,AllCollectionType:

    package org.ruangong.entity;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;
    
    public class AllCollectionType {
    	private List<String> list;
    	private String[] array;
    	private Map<String,String> map;
    	private Set<String> set;
    	private Properties props;
    	public List<String> getList() {
    		return list;
    	}
    	public void setList(List<String> list) {
    		this.list = list;
    	}
    	public String[] getArray() {
    		return array;
    	}
    	public void setArray(String[] array) {
    		this.array = array;
    	}
    	public Map<String, String> getMap() {
    		return map;
    	}
    	public void setMap(Map<String, String> map) {
    		this.map = map;
    	}
    	public Set<String> getSet() {
    		return set;
    	}
    	public void setSet(Set<String> set) {
    		this.set = set;
    	}
    	public Properties getProps() {
    		return props;
    	}
    	public void setProps(Properties props) {
    		this.props = props;
    	}
    	@Override
    	public String toString() {
    		return "AllCollectionType [list=" + list + ", array=" + Arrays.toString(array) + ", map=" + map + ", set=" + set
    				+ ", props=" + props + "]";
    	}
    	
    }
    

      在applicationContext.xml文件中:

    <bean id="collection" class="org.ruangong.entity.AllCollectionType">
    	<!-- 通过set方式赋值 -->
    	<property name="list">
    		<list>
    			<value>篮球</value>
    			<value>足球</value>
    			<value>乒乓球</value>
    		</list>
    	</property>
    	<property name="array">
    		<array>
    			<value>篮球_array</value>
    			<value>足球_array</value>	
    			<value>乒乓球_array</value>	
    		</array>
    	</property>
    	<property name="map">
    			<map>
    				<entry>
    					<key>
    					 	<value>
    					 	foot
    					 	</value>
    					</key>
    					<value>足球</value>
    					</entry>
    					<entry>
    					<key>
    					 	<value>
    					 	basket
    					 	</value>
    					</key>
    					<value>篮球球</value>
    					</entry>
    					<entry>
    					<key>
    					 	<value>
    					 	pingpang
    					 	</value>
    					</key>
    					<value>足球</value>
    				</entry>
    			</map>
    	</property>
    	<property name="set">
    		<set>
    			<value>篮球_set</value>
    			<value>足球_set</value>	
    			<value>乒乓球_set</value>	
    		</set>
    	</property>
    	<property name="props">
    		<props>
    			<prop key="foot4">足球</prop>
    			<prop key="basket4">篮球</prop>		
    			<prop key="pp4">乒乓球</prop>
    		</props>
    	</property>
    	</bean>
    

      test中进行测试:

    public static void collectionDemo(){
    		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    		AllCollectionType type = (AllCollectionType)context.getBean("collection");
    		System.out.println(type);
    	}
    

      

  • 相关阅读:
    【vim】分割窗口、标签页与Quickfix窗口
    新手学cocos2dx,centos7下的安装过程
    外部排序,杀鸡焉用牛刀?
    5亿整数的大文件,怎么排?
    【Hadoop】HDFS
    你好,树
    写给博客园博客团队,md的预览在哪里?
    老菜鸟致青春,程序员应该选择java 还是 c#-
    高性能server分析
    高性能服务端漫谈
  • 原文地址:https://www.cnblogs.com/jccjcc/p/13976728.html
Copyright © 2011-2022 走看看