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>

```

相关文章
|
23天前
|
XML 安全 Java
|
6天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
33 6
|
8天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
52 3
|
21天前
|
安全 Java 开发者
Spring容器中的bean是线程安全的吗?
Spring容器中的bean默认为单例模式,多线程环境下若操作共享成员变量,易引发线程安全问题。Spring未对单例bean做线程安全处理,需开发者自行解决。通常,Spring bean(如Controller、Service、Dao)无状态变化,故多为线程安全。若涉及线程安全问题,可通过编码或设置bean作用域为prototype解决。
32 1
|
20小时前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
20小时前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
2月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
79 1
|
4月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
1月前
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
28 2
|
1月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
140 8