Spring框架是松耦合的,控制反转(IOC)、依赖注入(DI)和面向切面(AOP);Spring Boot是对Spring应用的搭建及开发过程的简化,该框架使用了特
定的方式进行配置,不仅内嵌了Tlomcat、 Jetty等Servlet容器还集成了众多优秀的框架,可以创建独立的Spring应用程序。在结合了Maven等构建工具
之后,Spring项目的开发变得更加简捷与高效。
很多读者会对Spring与Spring Boot的概念产生混淆,可以这样理解,Spring Boot是一个基于Spring并封装了多种功能而且拿来即用的工具集,包括目前多数公司都在使用的Spring微服务,这些都是封装在Spring Boot中的一个又一个插件。
一、IOC容器
(1)Spring框架的核心是容器。容器负责创建、配置并管理对象的整个生命周期。Spring中所有的对象都以组件的形式被注入容器中,在容器中进行创建与销毁,这些对象被称为Spring Beans。
这里涉及两个概念:控制反转与依赖注入。
控制反转(Inversion of Control,IOC)是一种设计原则,它用来降低代码的耦合性,其最常见的实现方式叫作依赖注入( Dependency Injection,DI)。IOC容器的作用就是生成Bean实例、存放Bean实例并控制每个Bean实例的生命周期,在生命周期结束时销毁Bean实例。
(2)Spring容器有两种: BeanFactory 与ApplicationContext。
BeanFactory是Spring的原始接口,它提供了高级IOC的配置机制且位于类结构树的顶端,只有在每次获取对象时才会进行创建工作。ApplicationContext继承自BcanFactory接口,它拥有BeanFactory的全部功能并且扩展了很多高级的特性,每次容器启动时就会创建所有的对象。
在加载配置时可以采用以下3种方式:
ClassPathXmlApplicationContext从类路径加载配置文件。
FileSystemXmlApplicationContext从文件系统中装载配置文件。
AnnotationConfigApplicationContext基于注解加载配置。
使用ClassPathXmlApplicationContext加载项目内部路径下的配置文件,代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext("application Context.xml");
对于ClassPathXmlApplicationContext来讲,可以在文件路径前添加classpath:标识,代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext ("classpath:/application Context.xml");
也可以同时加载一组配置文件,这些配置文件在内存中会被Spring自动解析为一个配置文件,代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"config1.xml""config2.xml"});
使用FileSystemXmlApplicationContext可以加载文件系统路径下的配置文件,代码如下:
ApplicationContext ctx =new FileSystemXmlApplicationContext("application Context.xml");
还可以使用绝对路径的方式加载配置文件,代码如下:
ApplicationContext ctx = new FileSystemXmlApplicationContext("c:\application Context.xml");
可以在web.xml配置文件中显式加载指定的Spring配置文件,代码如下:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml<param-value> </context-param>
注意:BeanFactory在初始化容器时并未实例化Bean,它在首次访问目标Bean时才进行实例化。ApplicationContext在初始化应用上下文时便实例化所有的单实例Bean,因此ApplicationCol
ntext的初始化时间相对较长,但是其避免了使用对象时的“时间惩罚”问题。
二、标签与注解
Spring推荐使用注解配置替代XML配置,开发者可以在类、方法或字段级别添加注解。注解配置通过@Configration和@Bean注解实现。
@Configration注解用于声明当前类为配置类,相当于Spring中的XML配置文件。@Bean注解作用在方法上,其声明当前方法的返回值是一个Bean。之所以使用注解是因为在XML文件中进行Bean定义会增加配置文件的体积,查找及维护起来并不方便。
基于注解的配置默认不启用。要启用基于注解的配置,可以在Spring配置文件中添加如下代码:
<context:annotation-config/>
在某些配置文件中会看到形如<context :component-scan base-package="package"/>的配置方式,这种方式通过扫描包路径来自动加载带有相关注解的Bean,因此在使用<context: component-scan/>配置之后可以将<context: annotation-config/>配置省略。
修改示例程序并对比基于XML配置与基于注解配置的实现。首先在applicationContext.xml配置文件中激活注解配置,代码如下:
< context:annotation-config /> <bean id="egBean" class="com.example.bean.EgBean"> <property name="url" value="www.java.com"></property>
</bean >
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)