目录

一、xml方式创建对象

二、xml方式注入属性

第①种方式注入:set方法注入

第②种方式注入:有参构造函数注入

constructor-arg:通过构造函数注入

用name标签属性: 不按照顺序也会自动匹配

使用index标签属性:index的值为参数的顺序,默认从0开始

使用type标签属性:要和参数数据类型严格一致

三、xml注入其他类型属性

1、字面量--null值

2、含有特殊符号

3、注入属性-外部bean

4、注入属性-内部bean

什么是内部bean?

什么时候使用内部bean?

如何使用内部bean?

5、注入集合属性——数组、List集合、Map集合、Set集合

抽取公共部分

Spring系列文章


一、xml方式创建对象

<!--    配置User对象创建-->
<!--    id是取得别名,通过id别名可以把类找到-->
<bean id="user" class="com.atguigu.spring5.User"></bean>
  • id:唯一标识,不能加特殊符号
  • class:类全路经(包类路径)
  • name:可以加特殊符号

二、xml方式注入属性

DI:依赖注入,就是注入属性

第①种方式注入:set方法注入

package com.atguigu.spring5.Book;public class Book {private String bname;private String bauthor;public void setBname(String bname){this.bname=bname;}public void setBauthor(String bauthor){this.bauthor=bauthor;}public static void main(String[] args) {Book book = new Book();book.setBname("abc");}public void testDemo(){System.out.println(bname+"---"+bauthor);}
}
<?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"><!--    2.set方法注入属性--><bean id="book" class="com.atguigu.spring5.Book.Book">
<!--        使用propterty完成属性注入-->
<!--        name:类里面属性名称-->
<!--        value:向属性注入的值--><property name="bname" value="追风筝的人"></property><property name="bauthor" value="卡勒德·胡赛尼"></property></bean>
</beans>
package com.atguigu.spring5.Book;import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class BoolTestMain {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Booktest.xml");Book book = context.getBean("book", Book.class);System.out.println(book);book.testDemo();}
}

我们还可以通过另一种方式简化写法—p名称空间注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="books" class="com.atguigu.spring5.Book.Book" p:bname="朝花夕拾" p:bauthor="鲁迅"></bean></beans>

第②种方式注入:有参构造函数注入

public class Orders {//    有参数构造注入属性private String oname;private String address;private double money;public Orders(String oname, String address, double money) {this.oname = oname;this.address = address;this.money = money;}public void show() {System.out.println(oname + "---" + address + "---" + money);}
}

constructor-arg:通过构造函数注入

使用value标签属性: 默认按照constructor-arg标签的顺序

<constructor-arg value="电脑"></constructor-arg>
<constructor-arg value="China"></constructor-arg>

用name标签属性: 不按照顺序也会自动匹配

<constructor-arg name="oname" value="电脑"></constructor-arg>
<constructor-arg name="address" value="China"></constructor-arg>

使用index标签属性:index的值为参数的顺序,默认从0开始

 <!--index="0":有参构造的第一个属性-->
<constructor-arg index="0" value="电脑"></constructor-arg>
<constructor-arg index="1" value="China"></constructor-arg>

使用type标签属性:要和参数数据类型严格一致

(如果数据类型一致,按照constructor-arg标签的顺序匹配)

<constructor-arg type="double" value="23"></constructor-arg>
<constructor-arg type="java.lang.String" value="电脑"></constructor-arg>
<constructor-arg type="java.lang.String" value="China"></constructor-arg>

三、xml注入其他类型属性

1、字面量--null值

<constructor-arg name="oname" value="朝花夕拾"/>
<constructor-arg name="oauthor" value="鲁迅"/>
<constructor-arg name="address" ><null></null>
</constructor-arg>

2、含有特殊符号

  • &lt;&gt;
  • 把带特殊符号内容写到!CDATA
  <!--        1、使用&lt;&gt;先进行转义-->
<property name="bauthor" value="鲁迅"></property>
<property name="bname" value="&lt;&gt;朝花夕拾>>"></property><!--        2、使用!CDATA-->
<property name="bauthor"><value><![CDATA[<<南京>>]]></value>
</property>

3、注入属性-外部bean

通过ref属性将进行注入

public class School {//创建School类型属性,生成set方法private Teacher teacher;public void setTeacher(Teacher teacher) {this.teacher = teacher;}
}
<!--    注入外部bean-->
<bean id="school" class="com.atguigu.spring5.propertyTest.School"><property name="teacher" ref="teachers"></property>
</bean><bean id="teachers" class="com.atguigu.spring5.propertyTest.Teacher"></bean>

4、注入属性-内部bean

什么是内部bean?

在某一个bean中定义另一个bean作为属性

什么时候使用内部bean?

如果School类中的某个属性的数据类型是另一个类Book,则可以把这个类Book定义在属性的内部

如何使用内部bean?

public class School {//创建School类型属性,生成set方法private Teacher teacher;public void setTeacher(Teacher teacher) {this.teacher = teacher;}//部门private Book dept;public void setDept(Book dept) {this.dept = dept;}
}
public class Book {private String bname;private String bauthor;public void setBname(String bname) {this.bname = bname;}
}
 <!--    注入内部bean-->
<bean id="school" class="com.atguigu.spring5.propertyTest.School"><property name="teacher" ref="teachers"></property><property name="dept" ><bean id="book" class="com.atguigu.spring5.Book.Book"><property name="bname" value="朝花夕拾"></property></bean></property>
</bean>

5、注入集合属性——数组、List集合、Map集合、Set集合

package com.atguigu.spring5.CollectionTypeTest;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;/*** @BelongsProject: 02-Spring* @BelongsPackage: com.atguigu.spring5.CollectionTypeTest* @Author: dengLiMei* @CreateTime: 2023-02-09  09:46* @Description: TODO* @Version: 1.0*/
public class Student {//数组private String[] courses;//    List集合private List<String> lists;//Map集合private Map<String, String> maps;//Set集合private Set<String> sets;public void setSets(Set<String> sets) {this.sets = sets;}public Student() {}public void setCourses(String[] courses) {this.courses = courses;}public void setLists(List<String> lists) {this.lists = lists;}public void setMaps(Map<String, String> maps) {this.maps = maps;}public void show() {System.out.println(Arrays.toString(courses));System.out.println((lists));System.out.println((maps));System.out.println((sets));}
}
<?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="students" class="com.atguigu.spring5.CollectionTypeTest.Student"><!-- 数组--><property name="courses"><array><value>spring5</value><value>springboot</value></array></property><!--        List类型--><property name="lists"><list><value>springcloud</value><value>springcloudAlibaba</value></list></property><!--        Map集合--><property name="maps"><map><entry key="QQ" value="腾讯"></entry><entry key="淘宝" value="阿里"></entry></map></property><!--        Set集合--><property name="sets"><set><value>set-spring5</value><value>set-springboot</value></set></property></bean>
</beans>

输出结果:

如果一个类中包含了另一个类的实体对象,可以这样写

public class Course {//    课程名称private String cname;public void setCname(String cname) {this.cname = cname;}
}
package com.atguigu.spring5.CollectionTypeTest;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;public class Student2 {//实体对象-学生有多门课程private List<Course> courseList;public void setCourseList(List<Course> courseList) {this.courseList = courseList;}@Overridepublic String toString() {return "Student2{" +"courseList=" + courseList +'}';}
}
<bean id="student2" class="com.atguigu.spring5.CollectionTypeTest.Student2"><property name="courseList"><list><ref bean="course1"></ref><ref bean="course2"></ref></list></property></bean><!--    创建多个course对象-->
<bean id="course1" class="com.atguigu.spring5.CollectionTypeTest.Course"><property name="cname" value="spring5框架"></property>
</bean>
<bean id="course2" class="com.atguigu.spring5.CollectionTypeTest.Course"><property name="cname" value="MyBatis框架"></property>
</bean>
public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("CollectionTypeBeans.xml");Student2 students1 = context.getBean("student2", Student2.class);students1.show();
}

输出结果:

目前的问题:只能当前类使用,其他类不能用,接下来就是把集合属性抽取成公共部分让所有实体类都能够引入

抽取公共部分

public class Book {private List<String> list;public void setList(List<String> list) {this.list = list;}public void show(){System.out.println(list);}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><!--    1、提取list集合类型属性注入--><util:list id="bookList"><value>spring5</value><value>springboot</value><value>springcloud</value></util:list><!--    2、提取list集合类型属性注入使用--><bean id="book" class="com.atguigu.spring5.CollectionTypeTest.Book"><property name="list" ref="bookList"></property></bean>
</beans>
public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("CollectionTypeBeans.xml");Book book = context.getBean("book", Book.class);book.show();
}

输出结果:


Spring系列文章:

Spring——是什么?作用?内容?用到的设计模式?

Spring——Bean管理-xml方式进行属性注入

Spring——Bean管理-注解方式进行属性注入

Spring——什么是IOC?

Spring——AOP是什么?如何使用?

Spring——什么是事务?传播行为?事务隔离级别有哪些?

Spring——整合junit4、junit5使用方法

如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞+收藏脚印支持一下博主~

Spring——Bean管理-xml方式进行属性注入相关推荐

  1. IOC操作Bean管理XML方式(注入集合类型属性)

    目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 (4)编写一个测试类进行 ...

  2. IOC操作Bean管理XML方式(有参构造注入属性)

    IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 (3)步骤:进行测试 结 ...

  3. IOC操作Bean管理XML方式(外部属性文件)

    目录 IOC操作Bean管理XML方式(外部属性文件) 前情引入: 实验演示: 1.直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池jar包 (3)创建一个bean6.xml配置文件 ...

  4. IOC操作Bean管理XML方式(注入空值和特殊符号)

    IOC操作Bean管理XML方式(注入空值和特殊符号) 目录 IOC操作Bean管理XML方式(注入空值和特殊符号) (1)通过null标签注入空值: 标签注入空值 (2)属性值中包含特殊符号: 方法 ...

  5. IOC操作Bean管理XML方式(xml自动装配)

    目录 IOC操作Bean管理XML方式(xml自动装配) 一.演示自动装配过程 (1)根据 属性名称 装配 步骤一: 步骤二: 步骤三: (2)根据 属性类型 装配 (2.1)根据 类型 自动装配产生 ...

  6. IOC操作Bean管理XML方式(bean 的生命周期)

    目录 IOC操作Bean管理XML方式(bean 的生命周期) 1.bean 的生命周期(在单例模式下的生命周期) (1)通过构造器创建 bean 的实例(执行类中无参构造方法去创建对象) (2)为 ...

  7. IOC操作Bean管理XML方式(bean的作用域)

    目录 IOC操作Bean管理XML方式(bean的作用域) 1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式 (1)在Spring 配置文件bean 标签里面有属性(scop ...

  8. Spring框架中XML配置特殊属性注入

    Spring框架中XML配置特殊属性注入 前言 创建测试类 其他类型属性 前言 Spring框架中,在通过set方式进行属性注入时,可能会遇到某些特殊字符的注入,例如:null和某些标签字符" ...

  9. IOC操作Bean管理XML方式(FactoryBean)

    目录 IOC操作Bean管理XML方式(FactoryBean) Spring 有两种类型的bean 第一种:是普通的 bean 第二种:工厂bean FactoryBean 第一步:创建类,让这个类 ...

最新文章

  1. 火爆GitHub的《机器学习100天》,有人把它翻译成了中文版
  2. Linux的前世今生
  3. SAP CDS view redirect(重定向)的调试
  4. Linux修改密码后不能SSH远程登录了
  5. CodeForces - 976F Minimal k-covering
  6. 如何实现对象的深copy?
  7. android webview js 失效,Android WebView注入JQuery、JS脚本及执行无效的问题解决
  8. 《Python Cookbook 3rd》笔记(5.3):使用其他分隔符或行终止符打印
  9. 【Git】Git修改Repository语言类型
  10. 漫话:如何给女朋友解释什么是3PC?
  11. Android6.0内核移植(1):分析编译日志
  12. Matlab 警告: 名称不存在或不是目录
  13. H3CSE园区-STP
  14. 波兰表达式 逆波兰表达式
  15. matlab拟合反比例函数,y与x的函数关系式图像 已知变量y与x之间的函数
  16. java 人民币转换,java人民币大小写转换方法
  17. [NIPS 2018] Delta Encoder: An Effective Sample Synthesis Method for Few Shot Object Recognition
  18. Vue学习----第三天_webpack(学习webpack看这一篇就够了1.8w字)【6.7】
  19. 计算机系统概论基本知识
  20. 小小白的Android入门之计算器学习

热门文章

  1. 重装完win10系统我的电脑没声音了,如何处理
  2. 计算机的信息的表示教案,《信息的数字化表示》教学设计
  3. WIN11系统安装Linux子系统的方法
  4. 前端培训不要报个人班
  5. 圣诞树(用HTML制作,绝对漂亮)
  6. 使用MQTTClient.h库进行mqtt通讯【C语言】
  7. 如何学好并做好电池管理系统(BMS)
  8. 【书籍学习】史上最全的Java进阶书籍推荐
  9. 《计算机系统结构》期末复习
  10. 使用jquery.i18n实现国际化多语言显示