[Spring实战系列](6)配置Spring IOC容器的Bean

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/50619900 1. 简介Spring提供了一个强大的IOC容器来管理组成应用的bean。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/50619900
1. 简介

Spring提供了一个强大的IOC容器来管理组成应用的bean。为了利用容器服务,必须配置运行于Spring IOC容器中的Bean。

2. 解决方案

你可以通过XML文件,属性文件,注释甚至API来设置Spring IOC容器中的Bean。

Spring允许你在一个或者多个bean配置文件中配置bean。对于简单的应用程序,可以在单个配置文件中集中配置bean。但是对于有许多bean的大型应用,你应该根据其功能将其分割到多个配置文件中。

3. 创建Spring配置

正如前面所讲的,Spring是一个基于容器的框架。如果没有配置Spring,那它就是一个空容器,对于我们也毫无用处。所以我们需要配置Spring 来告诉容器它需要加载哪些Bean和如何装配这些Bean,这样才能确保它们能够彼此协作。

从Spring 3.0 开始,Spring 容器提供了两种配置Bean 的方式。传统上,Spring 使用一个或多个XML 文件作为配置文件,而Spring 3.0 还同时提供了 基于Java注解的配置方式。在这里我们首先使用 传统的XML文件配置方式,后面我们会改用注解的配置方式。

在XML文件中声明Bean时,Spring 配置文件的根元素是来源于Spring beans 命名空间所定义的<beans> 元素。以下为一个典型的Spring XML 配置文件:
 
   
<?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-3.0.xsd">
<!-- Bean declarations go here -->
</beans>

在<beans> 元素内,你可以放置所有的Spring 配置信息,包括<bean> 元素的声明。但是 beans 命名空间并不是你遇到的唯一的Spring 命名空间。Spring的核心框架自带了10 个命名空间配置,如下表:
命名空间 描述
AOP 为声明切面以及将@AspectJ注解的类代理为Spring切面提供了配置元素。
beans 支持声明Bean和装配Bean,是Spring最核心也是最原始的命名空间。
context 为配置Spring应用上下文提供了配置元素,包括自动检测和自动装配Bean,注入非Spring直接管理的对象。
jee 提供了与Java EE API的集成,例如JNDI和EJB。
jms 为声明消息驱动的POJO提供了配置元素。
lang 支持配置由Groovy,JRuby或BeanShell等脚本实现的Bean。
mvc 启用Spring MVC的能力,例如面向切面注解的控制器,视图控制器和拦截器。
oxm 支持Spring的对象到XML映射配置。
tx 提供声明式事务配置。
util 提供各种各样的工具类元素,包括把集成配置为Bean,支持属性占位符元素。

在这里我们主要学习的是为bean配置,其他有机会在学习。

4. 声明Bean

 
   
package com.sjf.bean;
/**
* 学生实体类
* @author sjf0115
*
*/
public class Student {
private String name;
private int age;
private boolean sex;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setSex(boolean sex) {
this.sex = sex;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("name:" + name + "\n");
builder.append("age:" + age + "\n");
builder.append("sex:" + (sex ? "boy" : "girl") + "\n");
return builder.toString();
}
}

正如你所看,我们实现了一个学生实体类Student,为其提供了姓名,年龄和性别属性。我们可以通过set方法为其属性设置值。既然定义了Student类,那就有请我们第一位学生Yoona。Yoona被定义为一个Spring Bean,并在配置文件(applicationContext.xml)中进行声明:
 
   
<?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 = "yoona" class = "com.sjf.bean.Student">
<property name="name" value="yoona"/>
<property name="age" value="24"/>
<property name="sex" value="true"/>
</bean>
</beans>

<bean> 元素是Spring 中最基本的配置单元,通过该元素Spring 将创建一个对象。这里创建了一个由Spring 容器管理的名字为yoona 的Bean。这有可能是最简单的<bean> 配置方式。id 属性定义了Bean 的名字,也作为该Bean 在Spring 容器中的引用。这个Bean 被称为yoona。你还可以根据class 属性得知,yoona是一个Student。对于简单类型的每个bean属性,可以指定一个 <value>元素。Spring会试图将你指定的值转换为该属性的声明类型。为了通过设置方法注入配置一个属性,可以使用 <property>元素,并在其name特性中指定属性名称。每个<property>要求bean包含对应的一个设置方法。

为了打印Student的详细信息,可以使用如下代码加载Spring应用上下文:
 
   
// 1.创建Spring IOC容器
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 2. 从IOC容器中获取Bean实例
Student stu = (Student)context.getBean("yoona");
// 3.调用toString方法
System.out.println(stu.toString());


目录
相关文章
|
10天前
|
XML Java 开发者
Spring Boot中的bean注入方式和原理
Spring Boot中的bean注入方式和原理
19 0
|
9天前
|
安全 算法 调度
C++队列探秘:队列容器的使用技巧与实战案例解析
C++队列探秘:队列容器的使用技巧与实战案例解析
119 0
|
14天前
|
Java Spring
Spring5深入浅出篇:bean的生命周期
Spring5深入浅出篇:bean的生命周期
|
17天前
|
存储 Kubernetes 云计算
云计算基础与实战:从虚拟机到容器化应用
云计算基础与实战:从虚拟机到容器化应用
19 0
|
17天前
|
XML Java 数据格式
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界 (下)
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界
|
17天前
|
XML Java 数据格式
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界 (上)
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界 (上)
|
15天前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
16天前
|
Oracle 关系型数据库 数据库
|
25天前
|
开发者 Docker Python
深入浅出:使用Docker容器化部署Python Web应用
在当今快速发展的软件开发领域,Docker作为一个开放平台,为开发者提供了将应用打包在轻量级、可移植的容器中的能力,从而简化了部署和管理应用程序的复杂性。本文将通过一个简单的Python Web应用示例,引导读者理解Docker的基本概念、容器化的优势以及如何使用Docker来容器化部署Python Web应用。我们将从零开始,逐步探索创建Dockerfile、构建镜像、运行容器等关键步骤,旨在为读者提供一个清晰、易于理解的指南,帮助他们掌握使用Docker容器化部署应用的技能。
|
3天前
|
监控 数据可视化 虚拟化
Docker容器常用命令笔记分享
Docker容器常用命令笔记分享
33 2

相关产品

  • 容器镜像服务
  • 容器服务Kubernetes版