前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring:轻松驾驭 Java 世界的利器

Spring:轻松驾驭 Java 世界的利器

原创
作者头像
繁依Fanyi
发布于 2024-01-03 14:22:22
发布于 2024-01-03 14:22:22
1500
举报

Java 开发领域,Spring 框架无疑是一颗璀璨的明星,它不仅提供了全面的企业级特性,还为开发者提供了简便而强大的开发方式。本文将深入探讨 Spring 框架的简介、配置和快速入门,带你轻松驾驭 Java 世界的利器。

Spring 简介

Spring 是一个综合性的框架,它的设计目标是降低企业级 Java 开发的复杂性。Spring 提供了全方位的解决方案,包括依赖注入、面向切面编程、事务管理、数据访问、消息传递等多个领域。Spring 框架的核心是 IoC(Inversion of Control,控制反转)和 AOP(Aspect-Oriented Programming,面向切面编程)。

IoC(控制反转)

控制反转是 Spring 框架的核心思想之一。在传统的开发中,对象的创建和管理由开发者负责,而在 Spring 中,这种控制被反转了。IoC 让 Spring 容器负责创建和管理对象,开发者只需要关注业务逻辑即可。

Spring 使用 Bean 容器来实现 IoC。Bean 容器是 Spring 框架的核心容器,负责创建、管理和装配 Bean。Bean 是 Spring 管理的对象,它们由 Spring 容器初始化、装配和管理。

AOP(面向切面编程)

面向切面编程是 Spring 框架的另一个核心思想。AOP 提供了一种方法,允许开发者在程序执行的特定切点上插入自定义的行为,而无需修改源代码。这样可以更好地实现横切关注点的复用和分离。

Spring 的 AOP 支持使用纯 Java 编程风格或 XML 配置来定义切面。通过 AOP,开发者可以将一些横切关注点(如事务管理、日志记录、性能监控等)从业务逻辑中分离出来,使得代码更加模块化和清晰。

Spring 配置

Spring 的配置方式主要有两种:XML 配置和注解配置。接下来我们将分别介绍这两种配置方式。

XML 配置

XML 配置是 Spring 最经典的配置方式之一,它使用 XML 文件来描述 Spring Bean 以及它们之间的依赖关系。

基本配置

下面是一个简单的 Spring XML 配置文件的例子:

代码语言:xml
AI代码解释
复制
<!-- applicationContext.xml -->

<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">

    <!-- 定义一个名为 "helloWorld" 的 Bean -->
    <bean id="helloWorld" class="com.example.HelloWorld">
        <!-- 设置属性值 -->
        <property name="message" value="Hello, Spring!" />
    </bean>

</beans>

在这个例子中:

  • <beans> 元素是配置文件的根元素,定义了 Spring 容器。
  • <bean> 元素定义了一个 Spring Bean,其中 id 属性指定了 Bean 的唯一标识符,class 属性指定了 Bean 的类型。
  • <property> 元素用于设置 Bean 的属性值。
注入依赖

在 Spring 中,Bean 之间的依赖关系可以通过构造函数注入或者属性注入来实现。以下是一个使用构造函数注入的例子:

代码语言:xml
AI代码解释
复制
<!-- applicationContext.xml -->

<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">

    <!-- 定义一个名为 "textEditor" 的 Bean -->
    <bean id="textEditor" class="com.example.TextEditor">
        <!-- 使用构造函数注入依赖 -->
        <constructor-arg ref="spellChecker" />
    </bean>

    <!-- 定义一个名为 "spellChecker" 的 Bean -->
    <bean id="spellChecker" class="com.example.SpellChecker" />

</beans>

在这个例子中,textEditor Bean 依赖于 spellChecker Bean,通过构造函数注入。constructor-arg 元素的 ref 属性指定了依赖的 Bean。

配置文件引入

为了更好地组织配置文件,可以使用 <import> 元素将多个配置文件组合在一起。例如:

代码语言:xml
AI代码解释
复制
<!-- mainApplicationContext.xml -->

<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">

    <!-- 引入其他配置文件 -->
    <import resource="classpath:applicationContext.xml" />
    <import resource="classpath:databaseContext.xml" />

</beans>

这样,可以将不同功能的配置拆分到不同的文件中,使得配置更加清晰和易于维护。

注解配置

除了 XML 配置外,Spring 还支持使用注解进行配置。注解配置更加简洁直观,可以减少大量的 XML 代码。

组件扫描

使用 @ComponentScan 注解开启组件扫描,Spring 将会自动扫描指定包及其子包下的类,将带有 @Component 或其他特定注解的类注册为 Bean。

代码语言:java
AI代码解释
复制
// AppConfig.java

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
}

在这个例子中,@Configuration 注解表示这是一个配置类,@ComponentScan 注解指定了扫描的基础包。

声明 Bean

使用 @Bean 注解声明一个 Bean:

代码语言:java
AI代码解释
复制
// AppConfig.java

@Configuration
public class AppConfig {

    @Bean
    public HelloWorld helloWorld() {
        return new HelloWorld();
    }

    @Bean
    public TextEditor textEditor() {
        return new TextEditor(spellChecker());
    }

    @Bean
    public SpellChecker spellChecker() {
        return new SpellChecker();
    }
}

在这个例子中,helloWorld()textEditor()spellChecker() 方法分别声明了三个 Bean,并通过 @Bean 注解告诉 Spring 如何创建它们。

Spring 快速入门

现在我们将通过一个简单的例子来展示如何使用 Spring 进行快速开发。假设我们有一个图书管理系统,我们将创建一个 Book 类和一个 BookService 类。

Book 类
代码语言:java
AI代码解释
复制
// Book.java

public class Book {

    private String title;
    private String author;

    // 省略构造函数、getter 和 setter 方法
}
BookService 类
代码语言:java
AI代码解释
复制
// BookService.java

@Service
public class BookService {

    @Autowired
    private BookRepository bookRepository;

    public List<Book> getAllBooks() {
        return bookRepository.findAll();
    }

    public void saveBook(Book book) {
        bookRepository.save(book);
    }
}

在这个例子中,BookService 类使用了 @Service 注解,表明它是一个服务类,由 Spring 管理。@Autowired 注解表示通过自动装配的方式注入 BookRepository,省去了手动创建的步骤。

BookRepository 类
代码语言:java
AI代码解释
复制
// BookRepository.java

@Repository
public class BookRepository {

    private List<Book> books = new ArrayList<>();

    public List<Book> findAll() {
        return books;
    }

    public void save(Book book) {
        books.add(book);
    }
}

BookRepository 类使用了 @Repository 注解,表明它是一个仓库类,负责数据存储。这里简单地使用一个列表模拟数据库操作。

测试类
代码语言:java
AI代码解释
复制
// Main.java

public class Main {

    public static void main(String[] args) {
        // 初始化 Spring 容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        // 获取 BookService Bean
        BookService bookService = context.getBean(BookService.class);

        // 创建一本书
        Book book = new Book();
        book.setTitle("Spring in Action");
        book.setAuthor("Craig Walls");

        // 保存书
        bookService.saveBook(book);

        // 获取所有书籍并打印
        List<Book> allBooks = bookService.getAllBooks();
        for (Book b : allBooks) {
            System.out.println("Title: " + b.getTitle() + ", Author: " + b.getAuthor());
        }

        // 关闭 Spring 容器
        context.close();
    }
}

在这个例子中,我们使用 AnnotationConfigApplicationContext 类来初始化 Spring 容器,并通过 getBean() 方法获取 BookService Bean。然后,我们创建一本书并保存,最后打印所有书籍信息。

结语

Spring 框架以其强大的功能和灵活的配置方式成为 Java 开发领域的佼佼者。本文简要介绍了 Spring 框架的核心思想,详细解释了 XML 和注解两种配置方式,并通过一个简单的例子演示了 Spring 的快速入门。希望通过本文的介绍,读者能够更好地理解和使用 Spring 框架,轻松驾驭 Java 世界的利器。


我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spring太强了!两万多字干货 超详细讲解
本文原创首发CSDN,本文链接https://blog.csdn.net/qq_41464123/article/details/108118680 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本链接,谢谢配合。
Designer 小郑
2023/08/01
4060
spring太强了!两万多字干货 超详细讲解
Spring注解-@Autowired注解使用
首先要知道另一个东西,default-autowire,它是在xml文件中进行配置的,可以设置为byName、byType、constructor和autodetect;比如byName,不用显式的在bean中写出依赖的对象,它会自动的匹配其它bean中id名与本bean的set**相同的,并自动装载。 @Autowired是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。 两者的功能是一样的,就是能减少或者消除属性或构造器参数的设置,只是配置地方不一样而已。 autowire四种模式的区别
SerMs
2022/04/11
1K0
Spring注解-@Autowired注解使用
Java后端的学习之Spring基础
Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api)
达达前端
2022/04/29
3820
Java后端的学习之Spring基础
[ SSH框架 ] Spring框架学习之二(Bean的管理和AOP思想)
一、Spring的Bean管理(注解方式) 1.1 什么是注解   要使用注解方式实现Spring的Bean管理,首先要明白什么是注解。通俗地讲,注解就是代码里的特殊标记,使用注解可以完成相应功能。
Kevin_Zhang
2018/05/22
5880
第65节:Java后端的学习之Spring基础
如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api)-springFramework. 效
达达前端
2019/07/03
4420
第65节:Java后端的学习之Spring基础
面试题-Spring【基础概念】
  Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。   Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。
用户4919348
2019/04/02
5780
面试题-Spring【基础概念】
day33_Spring学习笔记_01
4 + 1:4个核心jar包(beans、core、context、expression)+ 1个依赖jar包(com.springsource.org.apache.commons.logging-1.1.1.jar)
黑泽君
2018/10/11
4540
day33_Spring学习笔记_01
spring笔记(一)
且可以和其他框架一起使用;Spring与Struts, Spring与hibernate
HUC思梦
2020/09/03
3930
写了很久!详细理解Spring和IoC
Spring是一个轻量级开源框架,以 IOC(Inverse Of Control:控制反转)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,最为典型的当属数据库事务的使用,还能整合开源世界众多著名的第三方框架和类库,应该说Spring框架已经融入到了Java EE的各个开发领域。
程序员的时光001
2020/09/21
4370
写了很久!详细理解Spring和IoC
一篇文章带你掌握主流基础框架——Spring
这篇文章中我们将会介绍Spring的框架以及本体内容,包括核心容器,注解开发,AOP以及事务等内容
秋落雨微凉
2022/10/25
3180
一篇文章带你掌握主流基础框架——Spring
SSM学习笔记之Spring, SpringIoC, 注解, SpringAOP, Spring整合MyBatis
本文主要记录SSM框架中Spring的知识点,包括Spring,SpringIoC,注解,代理模式,SpringAOP,SpringAOP注解,Spring整合MyBatis。
Jetpropelledsnake21
2022/05/11
4430
SSM学习笔记之Spring, SpringIoC, 注解, SpringAOP, Spring整合MyBatis
Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring
Spring 框架为现代基于 java 的企业应用程序提供了一个全面的编程和配置模型——适用于任何类型的部署平台。
宁在春
2022/10/31
4840
Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring
Spring - 注入内部 Bean
如您所知,Java 内部类是在其他类的范围内定义的,类似地,内部 bean是在另一个 bean 的范围内定义的 bean。因此,<property/> 或 <constructor-arg/> 元素内的 <bean/> 元素称为内部 bean,如下所示。
IT胶囊
2021/08/30
8720
Spring基础——了解这么多就够了!
4. 初始化 IOC 容器( Spring 核心容器 / Spring 容器),通过容器获取 bean
xiao李
2024/02/15
3430
Spring基础——了解这么多就够了!
JAVA后端面试《Spring》
概念:SPring是一个支持控制反转(IOC)和面向切面编程(AOP)的容器框架。 好处:两降低>>>两支持>>>两方便
后端码匠
2020/02/25
8070
《Spring实战》读书笔记-第4章 面向切面的Spring
在软件开发中,散布于应用中多的功能被称为横切关注点(cross-cutting concern)。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的(但往往会直接嵌入到应用的业务逻辑之中)。把这些横切关注点与业务相分离正是面向切面编程(AOP)所要解决的问题。
Java架构师必看
2020/04/10
6000
Spring 使用注解进行 Bean 管理 | Spring学习笔记2.0
在src下创建一个 club.teenshare.bean 的包,并再创建一个 User 的类
做棵大树
2022/09/27
2550
Java Spring 框架详解
Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。
全栈程序员站长
2022/09/08
1.4K0
Java Spring 框架详解
Spring框架简介
随着软件结构的日益庞大,软件模块化趋势出现,软件开发也需要多人合作,随即分工出现。如何划分模块,如何定义接口方便分工成为软件工程设计中越来越关注的问题。良好的模块化具有以下优势:可扩展、易验证、易维护、易分工、易理解、代码复用。
Java团长
2018/08/03
4890
Spring超详细总结
Spring竭力避免因自身的API而弄乱你的应用代码。Spring不会强迫你实现Spring规范的接口或继承Spring规范的类,相反,在基于Spring构建的应用中,它的类通常没有任何痕迹表明你使用了Spring。最坏的场景是,一个类或许会使用Spring注解,但它依旧是POJO
说故事的五公子
2020/02/12
7430
相关推荐
spring太强了!两万多字干货 超详细讲解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档