百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

深入Spring(1) - Spring基础入门(spring入门书)

ccwgpt 2024-11-06 09:42 29 浏览 0 评论

Spring 框架是现代 Java 企业级开发中最受欢迎的框架之一。它提供了全面的基础架构支持,使开发人员能够专注于业务逻辑而不是与系统基础设施打交道。本文将带你深入了解 Spring 框架的基础知识,帮助你迅速上手。

目录

  1. 什么是 Spring?
  2. Spring 的核心概念IoC(控制反转)DI(依赖注入)AOP(面向切面编程)
  3. Spring 环境配置Maven 项目配置Spring 配置文件
  4. Spring BeanBean 的定义与管理Bean 的作用域Bean 的生命周期
  5. 总结


1. 什么是 Spring?

Spring 是一个开源的轻量级 Java 开发框架,它通过 DI (Dependency Injection) 和 AOP (Aspect-Oriented Programming) 提供了简单的编程模型,帮助开发者构建健壮的、可测试的企业级应用程序。

Spring 的特点包括模块化、灵活性、高度可测试性和一组丰富的 API。它几乎适用于所有的 Java 应用,包括后端服务、微服务、大数据处理等。

2. Spring 的核心概念

IoC(控制反转)

控制反转 (Inversion of Control) 是 Spring 最核心的理念之一。它将对象的创建和依赖关系的管理交给 Spring 容器处理,而不是在代码中手动管理。这使得代码更加模块化和松散耦合。

示例:

public class HelloWorld {
    private String message;

    public void setMessage(String message){
        this.message = message;
    }

    public void getMessage(){
        System.out.println("Your Message : " + message);
    }
}

DI(依赖注入)


依赖注入 (Dependency Injection) 是 IoC 的具体实现方式。在 Spring 中,我们可以通过构造函数注入、Setter 注入和接口注入等多种方式为对象注入依赖。

示例(通过 XML 配置进行 Setter 注入):

<bean id="helloWorld" class="com.example.HelloWorld">
    <property name="message" value="Hello, Spring!"/>
</bean>

AOP(面向切面编程)

面向切面编程 (Aspect-Oriented Programming) 允许你在不修改源代码的情况下,将横切关注点(如日志记录、事务管理等)分离出来。Spring 通过 AOP 提供了一种干净的软件设计,使得核心业务逻辑与系统服务分离。

示例:

@Aspect
public class LoggingAspect {

    @Before("execution(* com.example.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("logBefore() is running!");
        System.out.println("hijacked : " + joinPoint.getSignature().getName());
        System.out.println("******");
    }
}

3. Spring 环境配置

Maven 项目配置

为了使用 Spring 框架,你需要在项目中添加相应的依赖。以下是一个典型的 Maven 配置文件 (pom.xml):

<dependencies>
    <!-- Spring Core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.8</version>
    </dependency>
</dependencies>

Spring 配置文件

Spring 容器通过 XML 或 Java 注解配置来管理对象。以下是一个简单的 XML 配置文件示例 (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">
    
    <bean id="helloWorld" class="com.example.HelloWorld">
        <property name="message" value="Hello, Spring!"/>
    </bean>
</beans>

4. Spring Bean

Bean 的定义与管理

在 Spring 中,Bean 是由 Spring 容器管理的对象。你可以在 XML 文件中定义 bean,如上面的示例所示。也可以使用注解来定义 bean。

示例(使用注解定义 Bean):

@Configuration
public class AppConfig {

    @Bean
    public HelloWorld helloWorld() {
        HelloWorld helloWorld = new HelloWorld();
        helloWorld.setMessage("Hello, Spring with Annotation!");
        return helloWorld;
    }
}

Bean 的作用域

Spring 支持多种 bean 作用域,包括 singleton、prototype、request、session 等。默认作用域是 singleton,即每个 Spring 容器中只有一个示例。

示例(设置 Bean 的作用域):

<bean id="helloWorld" class="com.example.HelloWorld" scope="prototype">
    <property name="message" value="Hello, Spring!"/>
</bean>

Bean 的生命周期

Bean 的生命周期由 Spring 容器管理,从创建、初始化、到销毁。你可以实现特定的接口或使用注解定制 bean 的生命周期。

示例(定制 Bean 生命周期):

public class HelloWorld {
    private String message;

    public void setMessage(String message){
        this.message = message;
    }

    public void getMessage(){
        System.out.println("Your Message : " + message);
    }

    public void init() {
        System.out.println("Bean is going through init.");
    }

    public void destroy() {
        System.out.println("Bean will destroy now.");
    }
}

在 XML 配置中指定 init 和 destroy 方法:

<bean id="helloWorld" class="com.example.HelloWorld" init-method="init" destroy-method="destroy">
    <property name="message" value="Hello, Spring!"/>
</bean>

5. 总结

通过本篇文章,我们了解了 Spring 框架的基础知识,包括控制反转、依赖注入和面向切面编程等核心概念,以及如何配置和管理 Spring Bean。理解这些基本概念和操作是使用 Spring 框架进行企业级开发的第一步。后续的文章中,我们将深入探讨 Spring 框架的其他高级功能和最佳实践。

相关推荐

如何基于Spring Security框架实现权限管理

SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架,用于保护基于Spring的应用程序。SpringSecurity主要是从两个方面解决安全性问题:web请求级别:使...

一个轻量级 Java 权限认证框架,Sa-Token 让鉴权变得简单、优雅!

一、框架介绍Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。官网文档:...

16.3K Star!简洁高效的Java权限认证与会话管理框架——Sa-Token

简介今天给大家推荐一个轻量级的Java权限认证框架——Sa-Token。它可以为JavaWeb应用同完整的权限认证解决方案,它的目标是简化权限管理和登录认证的流程,具备高度灵活性和简单易用的特点。S...

从Shiro迁移到Sa-Token:老版JeecgBoot项目权限框架平滑升级方案

背景介绍对于许多维护老版JeecgBoot项目的开发者来说,权限框架的升级一直是个棘手问题。这篇文章分享一种实用的方案,用于将老版JeecgBoot中的ApacheShiro替换为更现代的Sa-To...

刑法框架体系,对照着框架体系学习可以事半功倍哦

有了它,妈妈再也不用担心我司考过不啦!有了它,妈妈再也不用担心我司考过不了啦!其他部门法正在陆续整理制作中哦看不清的话请戳http://mp.weixin.qq.com/s?__biz=MzA3NDE...

全新体验版Windows QQ上线,实现三端统一

7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。记者从腾讯获悉,继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构...

农村自建房造价多少?包工头教你怎么算

通常我们在找专业人士设计农村自建房设计图时,不管你是打算建独栋一层别墅还是独栋二层别墅或是独栋三层别墅,你是否也找他们打听过相应的房屋工程造价呢?下面简单介绍一下农村自建房的傻瓜式造价估算:1、砖混结...

QQ大会员品牌运营策划与设计(qq大会员有哪些个性装扮)

编辑导语:在互联网产品越来越同质化的今天,做出有差异性和符合品牌调性的设计是品牌运营过程中需要重视的问题。本文作者从QQ大会员品牌项目实践出发,分享了品牌运营设计过程中遇到的一些问题以及具体操作方案,...

支持鸿蒙平台,腾讯视频ovCompose跨平台框架发布

IT之家6月3日消息,腾讯开源今日官宣发布腾讯视频ovCompose跨平台框架,其是腾讯大前端领域Oteam中,腾讯视频团队基于ComposeMultiplatform生态推出的...

腾讯 QQ Mac 版推倒重做,全新 1.0 版本开启内测

IT之家9月1日消息,据多位IT之家小伙伴投稿,腾讯QQMac版近日迎来了全新通用版内测,版本号重新由1.0开始,目前放出的体验版为1.0.4-305。从下图可以看到,该版本在U...

全新体验版Windows QQ正式上线官网,实现三端统一

7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。记者从腾讯获悉,继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构...

QQ,到了不能不变的境地(怎么发qq邮件到别人邮箱)

相比微信一个小更新,乃至一个小动作,都能上热搜的顶级热度。隔壁的老大哥QQ,显得有些冷清。即使更新再快,功能再激情,都很难引起用户们的集体讨论。机友们细想一番,咱们的老朋友QQ,有多久没上过热搜啦?真...

基于Electron框架全面重做:全新Linux版QQ开启公测

来源:快科技不久前,腾讯QQ项目组曾发布预告,宣布QQforLinux新版本即将开启公测。现在,新的Linux版QQ已经开启公测,不过目前仅支持x86架构,arm64架构还仍在适配中。与此前极为简...

QQ全面升级?基于Electron技术的Windows内测版本预计将于明年推出

在2022年,作为经典的聊天软件的QQ在经历多次的功能调整后,正式选择基于新技术开发新版本的QQ。今日,据相关媒体报道,腾讯QQ项目组发布预告:QQforLinux将在本周迎来公测,全新的QQf...

跨平台三端重构正式统一,QQ Windows全新体验版上架官网

7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构,实现了桌面端Q...

取消回复欢迎 发表评论: