Spring初识——IOC 操作 Bean 管理(基于 xml 方式)

简介: 本文简单总结了在Spring5学习初期对IOC操作的理解

什么是bean管理?

- Bean 管理指的是两个操作:

(1)Spring 创建对象

(2)Spirng 注入属性

- Bean 管理操作有两种方式

(1)基于 xml 配置文件方式实现

(2)基于注解方式实现

# 一.基于Xml方式创建对象

```

//定义User类

public class User {  

}

```

1. 在 spring 配置文件中,使用 bean 标签,标签里面添加对应属性,就可以实现对象创建.

1. 在 bean 标签有很多属性,介绍常用的属性

     -  id 属性:唯一标识

     -  class 属性:类全路径(包类路径)

1. 创建对象时候,默认也是执行无参数构造方法完成对象创建

```

<!--配置User类的对象创建-->

<bean id="user" class="com.spring5.User"></bean>

```

# 二.基于 xml 方式注入属性

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

###### 1. 第一种注入方式:使用 set 方法进行注入

```

//定义学生类和对应的set方法

private int age;

 

private String name;

 

public class Student {

   public void setAge(int age) {

       this.age = age;

   }

   public void setName(String name) {

       this.name = name;

   }

}

```

在 spring 配置文件进行如下配置

```

<!--使用 property 完成属性注入

name:类里面属性名称

value:向属性注入的值

-->

<bean  id="student" class="com.spring5.Student">

   <property name="age" value="18"></property>

   <property name="name" value="张三"></property>

</bean>

```

###### 2. 第二种注入方式:使用有参数构造进行注入

```

//定义学生类和对应的带参构造方法

public class Student {

   private int age;

   private String name;

   public Student(int age, String name) {

       this.age = age;

       this.name = name;

   }

}

```

在 spring 配置文件进行如下配置

```

<!-- 有参数构造注入属性

使用constructor-arg完成属性注入-->

<bean id="student" class="com.spring5.Student">

   <constructor-arg name="age" value="18"></constructor-arg>

   <constructor-arg name="name" value="李四"></constructor-arg>

</bean>

```

# 三.基于xml 注入其他类型属性

###### 1. 字面量

 (1)null 值

```

<!--null 值-->

<property name="address">

<null/>

</property>

```

 (2)属性值包含特殊符号(使用转义字符或CDATA域实现)

```

<!--属性值包含特殊符号

1 把<>进行转义 < >

2 把带特殊符号内容写到 CDATA

-->

<property name="address">

<value><![CDATA[<<南京>>]]></value>

</property>

```

###### 2.外部bean

(1)创建两个类 service 类和 dao 类

(2)在 service 调用 dao 里面的方法

(3)在 spring 配置文件中进行配置

```

//创建Dao接口

public interface UserDao {

}

```

```

//创建Dao接口实现类

public class UserDaoImpl implements  UserDao {

 

}

```

在 spring 配置文件进行如下配置

```

<!--1 service 和 dao 对象创建-->

<bean id="userService" class="com.atguigu.spring5.service.UserService">

<!--注入 userDao 对象

name 属性:类里面属性名称

ref 属性:创建 userDao 对象 bean 标签 id 值

-->

<property name="userDao" ref="userDaoImpl"></property>

</bean>

<bean id="userDaoImpl" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>

```

###### 3.内部bean

```

//员工类

public class Emp {

private  String ename;

private  String gender;

private Dept dept;

   public Dept getDept() {

       return dept;

   }

   public void setDept(Dept dept) {

       this.dept = dept;

   }

   public void setEname(String ename) {

       this.ename = ename;

   }

   public void setGender(String gender) {

       this.gender = gender;

   }

 

}

```

```

//部门类

public class Dept {

   private String dname;

   public void setDname(String dname) {

       this.dname = dname;

   }  

}

```

在 spring 配置文件进行如下配置

```

<bean id="emp" class="com.spring5.bean.Emp">

   <property name="ename" value="张三"></property>

   <property name="gender" value="女"></property>

   <property name="dept" >

       <bean id="dept" class="com.spring5.bean.Dept">

           <property name="dname" value="安保部"></property>

       </bean>

   </property>

</bean>

```

# 四.基于xml 注入集合属性

###### 1. 注入普通属性值

创建Stu类,定义数组、list、map、set 类型属性,生成对应 set 方法

```

public class Stu {

//1 数组类型属性

private String[] courses;

//2 list 集合类型属性

private List<String> list;

//3 map 集合类型属性

private Map<String,String> maps;

//4 set 集合类型属性

private Set<String> sets;

public void setSets(Set<String> sets) {

this.sets = sets;

}

public void setList(List<String> list) {

this.list = list;

}

public void setMaps(Map<String, String> maps) {

this.maps = maps;

}

}

```

在 spring 配置文件进行如下配置

```

<property name="courses">

           <array>

               <value>java课程</value>

               <value>数据库课程</value>

           </array>

       </property>

       <property name="list">

           <list>

               <value>张三</value>

               <value>李四</value>

           </list>

       </property>

       <property name="maps">

           <map>

               <entry key="JAVA" value="java"></entry>

               <entry key="PHP" value="php"></entry>

           </map>

       </property>

        <property name="sets">

        <set>

            <value>mysql</value>

            <value>redis</value>

        </set>

        </property>

   </bean>

</beans>

```

###### 2.在集合里面设置对象类型值

```

//创建Student类

public class Student {

   private List<Course> list;

public void setCourseList(List<Course> courseList) {

   this.courseList = courseList;

}  

   }

```

```

//定义Sources类

public class Course {

   private  String cname;

   public void setCname(String cname) {

       this.cname = cname;

   }

 

```

在 spring 配置文件进行如下配置

```

<!--创建多个 course 对象-->

<bean id="course1" class="com.atguigu.spring5.collectiontype.Course">

<property name="cname" value="Spring5 框架"></property>

</bean>

<bean id="course2" class="com.atguigu.spring5.collectiontype.Course">

<property name="cname" value="MyBatis 框架"></property>

</bean>

<!--注入 list 集合类型,值是对象-->

<property name="courseList">

<list>

<ref bean="course1"></ref>

<ref bean="course2"></ref>

</list>

</property>

```

相关文章
|
25天前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
118 26
|
2月前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
118 69
|
2月前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
64 21
|
2月前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
2月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
2月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
2月前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
2月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
78 6
|
4月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
120 1
|
6月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)