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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 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());


目录
相关文章
|
8天前
|
Linux pouch 容器
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
关于如何在CentOS 7.6操作系统上安装和使用阿里巴巴开源的Pouch容器管理工具的实战教程。
39 2
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
|
26天前
|
XML Java 数据格式
Spring5入门到实战------8、IOC容器-Bean管理注解方式
这篇文章详细介绍了Spring5框架中使用注解进行Bean管理的方法,包括创建Bean的注解、自动装配和属性注入的注解,以及如何用配置类替代XML配置文件实现完全注解开发。
Spring5入门到实战------8、IOC容器-Bean管理注解方式
|
10天前
|
运维 开发者 Docker
Docker容器部署实战:从入门到精通
【8月更文挑战第31天】 本文将引导读者了解如何使用Docker容器技术来简化和加速应用程序的部署过程。文章将通过实际案例探讨Docker的基本概念、架构,以及如何创建、管理和维护Docker容器。我们将通过详细的代码示例和操作指导,展示如何在本地环境或云基础设施上部署应用,并讨论如何克服在实际部署中可能遇到的挑战。无论你是DevOps工程师、软件开发者还是IT专业学生,本文都将为你提供深入理解并有效使用Docker的全面指南。
|
11天前
|
Kubernetes Cloud Native Docker
云原生入门:Docker容器化部署实战
【8月更文挑战第31天】在数字化浪潮中,云原生技术成为企业转型的助推器。本文通过Docker容器化部署的实践案例,引导读者从零基础到掌握基础的云原生应用部署技能。我们将一起探索Docker的魅力,学习如何将一个应用容器化,并在云平台上运行起来,为深入云原生世界打下坚实基础。
|
14天前
|
Kubernetes Linux 开发者
【实战秘籍】从零开始:用.NET与Docker打造现代化容器化应用之旅
【8月更文挑战第28天】本文详细介绍如何使用 .NET 框架构建并部署 Docker 容器化应用程序,涵盖环境搭建、项目创建、Dockerfile 编写等关键步骤。首先安装必要软件,如 Visual Studio 2022 及 Docker Desktop。接着创建 .NET Core 控制台应用,并在项目根目录编写 Dockerfile 文件。使用 .NET 运行时基础镜像,复制二进制文件,指定入口点。运行命令构建镜像并测试容器。为实现通信,映射端口。最后,标签化镜像并推送到 Docker Hub,为生产环境部署做好准备。掌握这些步骤,即可轻松应对从小型项目到大规模应用的各种需求。
35 0
|
13天前
|
Cloud Native 持续交付 Docker
云原生之旅:Docker容器化实战指南
【8月更文挑战第29天】本文将引领你进入云原生技术的世界,以Docker容器化为切入点,深入浅出地介绍如何利用Docker进行应用的打包、部署及管理。我们将通过实际代码示例,一步步展示Docker镜像的构建过程,以及如何运行和管理这些容器。无论你是初学者还是有一定经验的开发者,都能从中获得宝贵的知识和实操经验。
|
8天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
8天前
|
应用服务中间件 nginx Docker
Docker同一台宿主机容器通信-通过容器名称互联
本文详细介绍了如何通过容器名称实现同一宿主机上容器间的互联,并提供了实战案例。首先,文章解释了容器间通过自定义名称访问的原理,随后演示了创建并连接Tomcat与Nginx容器的具体步骤。此外,还讨论了配置中可能出现的问题及解决方案,包括避免硬编码IP地址和使用自定义容器别名来增强系统的灵活性与可维护性。通过这些实践,展示了如何高效地配置容器间通信,确保服务稳定可靠。
16 1
Docker同一台宿主机容器通信-通过容器名称互联
|
5天前
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
8天前
|
存储 Unix 虚拟化
Docker容器简介
Docker是一种轻量级的虚拟化技术,它通过容器化应用,提高了硬件资源利用率,简化了应用的部署、运输和运行,且与虚拟机相比,具有更快的交付速度和更低的资源消耗。
22 2
下一篇
DDNS