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

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 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());


目录
相关文章
|
6月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
726 51
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
9月前
|
缓存 监控 前端开发
告别卡顿!3大前端性能优化魔法 + CSS容器查询实战
告别卡顿!3大前端性能优化魔法 + CSS容器查询实战
317 95
|
10月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
6月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
12月前
|
Ubuntu Linux Docker
Docker容器的实战讲解
这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
271 27
|
人工智能 安全 API
容器化AI模型的安全防护实战:代码示例与最佳实践
本文基于前文探讨的容器化AI模型安全威胁,通过代码示例展示如何在实际项目中实现多层次的安全防护措施。以一个基于TensorFlow的图像分类模型为例,介绍了输入验证、模型加密、API认证和日志记录的具体实现方法,并结合最佳实践,如使用安全容器镜像、限制权限、网络隔离等,帮助构建更安全的AI服务。
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
333 2
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
255 0
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细解析Spring Bean的生命周期及其核心概念,并深入源码分析。Spring Bean是Spring框架的核心,由容器管理其生命周期。从实例化到销毁,共经历十个阶段,包括属性赋值、接口回调、初始化及销毁等。通过剖析`BeanFactory`、`ApplicationContext`等关键接口与类,帮助你深入了解Spring Bean的管理机制。希望本文能助你更好地掌握Spring Bean生命周期。
1432 1
下一篇
开通oss服务