当前位置 : 主页 > 编程语言 > java >

跟老杜手撕Spring6教程(十一)set注入专题-2

来源:互联网 收集:自由互联 发布时间:2023-03-22
级联属性赋值(了解) 本篇文章说说set注入专题之级联属性赋值,上篇说了set注入专题 ​​https://blog.51cto.com/u_15485663/6132751​​ 配合视频教程观看,更易理解吸收,动力节点老杜的S

级联属性赋值(了解)

本篇文章说说set注入专题之级联属性赋值,上篇说了set注入专题

​​https://blog.51cto.com/u_15485663/6132751​​

配合视频教程观看,更易理解吸收,动力节点老杜的Spring6教程采用难度逐步递进的方式,从入门的第一个程序到手写Spring框架,真正的能够让小白成为老手。如果你是老程序员不妨看看手写Spring框架,也会让你受益颇多。

package com.powernode.spring6.beans;/** * @author 动力节点 * @version 1.0 * @className Clazz * @since 1.0 **/public class Clazz { private String name; public Clazz() { } public Clazz(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Clazz{" + "name='" + name + '\'' + '}'; }}package com.powernode.spring6.beans;/** * @author 动力节点 * @version 1.0 * @className Student * @since 1.0 **/public class Student { private String name; private Clazz clazz; public Student() { } public Student(String name, Clazz clazz) { this.name = name; this.clazz = clazz; } public void setName(String name) { this.name = name; } public void setClazz(Clazz clazz) { this.clazz = clazz; } public Clazz getClazz() { return clazz; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", clazz=" + clazz + '}'; }}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="clazzBean" class="com.powernode.spring6.beans.Clazz"/> <bean id="student" class="com.powernode.spring6.beans.Student"> <property name="name" value="张三"/> <!--要点1:以下两行配置的顺序不能颠倒--> <property name="clazz" ref="clazzBean"/> <!--要点2:clazz属性必须有getter方法--> <property name="clazz.name" value="高三一班"/> </bean></beans>@Testpublic void testCascade(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-cascade.xml"); Student student = applicationContext.getBean("student", Student.class); System.out.println(student);}

跟老杜手撕Spring6教程(十一)set注入专题-2_xml

运行结果:

跟老杜手撕Spring6教程(十一)set注入专题-2_spring_02

要点:

  • 在spring配置文件中,如上,注意顺序。
  • 在spring配置文件中,clazz属性必须提供getter方法。

注入数组

当数组中的元素是简单类型:

package com.powernode.spring6.beans;import java.util.Arrays;public class Person { private String[] favariteFoods; public void setFavariteFoods(String[] favariteFoods) { this.favariteFoods = favariteFoods; } @Override public String toString() { return "Person{" + "favariteFoods=" + Arrays.toString(favariteFoods) + '}'; }}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="person" class="com.powernode.spring6.beans.Person"> <property name="favariteFoods"> <array> <value>鸡排</value> <value>汉堡</value> <value>鹅肝</value> </array> </property> </bean></beans>@Testpublic void testArraySimple(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-array-simple.xml"); Person person = applicationContext.getBean("person", Person.class); System.out.println(person);}

跟老杜手撕Spring6教程(十一)set注入专题-2_xml_03

当数组中的元素是非简单类型:一个订单中包含多个商品。

package com.powernode.spring6.beans;/** * @author 动力节点 * @version 1.0 * @className Goods * @since 1.0 **/public class Goods { private String name; public Goods() { } public Goods(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Goods{" + "name='" + name + '\'' + '}'; }}package com.powernode.spring6.beans;import java.util.Arrays;/** * @author 动力节点 * @version 1.0 * @className Order * @since 1.0 **/public class Order { // 一个订单中有多个商品 private Goods[] goods; public Order() { } public Order(Goods[] goods) { this.goods = goods; } public void setGoods(Goods[] goods) { this.goods = goods; } @Override public String toString() { return "Order{" + "goods=" + Arrays.toString(goods) + '}'; }}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="goods1" class="com.powernode.spring6.beans.Goods"> <property name="name" value="西瓜"/> </bean> <bean id="goods2" class="com.powernode.spring6.beans.Goods"> <property name="name" value="苹果"/> </bean> <bean id="order" class="com.powernode.spring6.beans.Order"> <property name="goods"> <array> <!--这里使用ref标签即可--> <ref bean="goods1"/> <ref bean="goods2"/> </array> </property> </bean></beans>

跟老杜手撕Spring6教程(十一)set注入专题-2_List_04

测试程序:

@Testpublic void testArray(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-array.xml"); Order order = applicationContext.getBean("order", Order.class); System.out.println(order);}

跟老杜手撕Spring6教程(十一)set注入专题-2_List_05

执行结果:

跟老杜手撕Spring6教程(十一)set注入专题-2_xml_06

要点:

  • 如果数组中是简单类型,使用value标签。
  • 如果数组中是非简单类型,使用ref标签。

注入List集合

List集合:有序可重复

package com.powernode.spring6.beans;import java.util.List;/** * @author 动力节点 * @version 1.0 * @className People * @since 1.0 **/public class People { // 一个人有多个名字 private List<String> names; public void setNames(List<String> names) { this.names = names; } @Override public String toString() { return "People{" + "names=" + names + '}'; }}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="peopleBean" class="com.powernode.spring6.beans.People"> <property name="names"> <list> <value>铁锤</value> <value>张三</value> <value>张三</value> <value>张三</value> <value>狼</value> </list> </property> </bean></beans>@Testpublic void testCollection(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-collection.xml"); People peopleBean = applicationContext.getBean("peopleBean", People.class); System.out.println(peopleBean);}

执行结果:

跟老杜手撕Spring6教程(十一)set注入专题-2_List_07

注意:注入List集合的时候使用list标签,如果List集合中是简单类型使用value标签,反之使用ref标签。

网友评论