Spring框架定义的七大模块

Spring

图片来自百度
在这里插入图片描述

1、Sping Core

Spring Core是Spring框架的基础,它提供了IoC(控制反转)和DI(依赖注入)功能,这是Spring框架的核心功能。IoC和DI有助于降低应用程序组件之间的耦合度,提高可维护性和可测试性。
有什么作用?

  • 控制反转(IoC)和依赖注入(DI):Spring Core提供了IoC容器的实现,该容器负责管理应用程序中的对象及其生命周期。I
  • 资源管理:可以加载各种形式的资源
  • 类型转换:可以自动将一种类型的对象转换为另一种类型,而无需手动编写转换代码。
  • 事件处理:允许开发者定义和应用程序事件,并注册事件监听器来响应这些事件。
  • 扩展性和灵活性: 允许开发者通过扩展点自定义和增强容器的行为。
    应用于什么场景?
    Web应用开发、企业级应用开发、集成其他框架和库、构建微服务架构、批处理应用

2、Spring Context

Spring Context,即Spring上下文,是Spring框架中的一个核心模块。它提供了应用程序上下文的创建和管理功能,这个上下文可以看作是一个中心化的容器,负责加载、配置和管理Bean对象。
有什么作用?

  • Bean的容器和管理:负责创建、初始化、配置和管理应用程序中的Bean。
  • 依赖注入(DI):能够将一个Bean所依赖的其他Bean注入到该Bean中,从而实现Bean之间的解耦。
  • 资源加载和国际化:可以加载应用程序所需的配置文件、图片、XML等资源。同时,它还支持国际化。
  • 事件处理: 允许开发者定义自定义事件,并在适当的时候发布这些事件。
  • AOP(面向切面编程)的支持:Spring Context与Spring AOP紧密集成,为开发者提供了面向切面编程的能力。
    应用于什么场景?
    Web应用开发、企业级应用开发、集成其他框架和库、构建微服务架构、批处理应用

3、Spring AOP

Spring AOP(面向切面编程)是Spring框架的一个重要核心部分,是一种编程思想,也是对面向对象编程(OOP)的一种补充。其主要作用是将功能性需求和非功能性需求进行分离,使开发人员能够集中处理某个关注点或横切逻辑,减少对业务代码的侵入,从而增强代码的可读性和可维护性。
(1) 怎样使用Spring AOP?
使用Spring AOP的具体流程涉及多个步骤,包括定义切面、通知和切入点,然后配置Spring以启用AOP。
需要定义一个切面类,该类包含了通知方法:

定义了一个名为LoggingAspect的切面类,它包含了一个前置通知logBefore和一个后置通知logAfter。

依赖可以在这里找->https://mvnrepository.com/,spring-boot-starter-aop、aspectjweaver

@Aspect  
@Component  
public class LoggingAspect {  
  
  	/*
  	@Before和@After注解分别标识前置通知和后置通知,它们的参数是一个切入点表达式,
  	这里使用了execution表达式来匹配com.example.service包下所有类的所有方法。
  	*/
    @Before("execution(* com.example.service.*.*(..))")  
    public void logBefore(JoinPoint joinPoint) {  
        System.out.println("Before method: " + joinPoint.getSignature().getName());  
    }  
  
    @After("execution(* com.example.service.*.*(..))")  
    public void logAfter(JoinPoint joinPoint) {  
        System.out.println("After method: " + joinPoint.getSignature().getName());  
    }  
}

需要在Spring配置中启用AOP:

/*
@EnableAspectJAutoProxy注解告诉Spring启用对AspectJ自动代理的支持,
这样Spring就会自动为匹配的bean创建代理,并将切面织入到目标bean中
*/
@Configuration  
@ComponentScan(basePackages = "com.example")  
@EnableAspectJAutoProxy  
public class AppConfig {  

    // 配置类可以包含其他bean定义  

}

需要在业务逻辑中调用被通知的方法:

@Service  
public class MyService {  
	/*
	当MyService的doSomething方法被调用时,
	由于配置了AOP,Spring会自动拦截这个方法调用,
	并在方法执行前后分别调用LoggingAspect中的logBefore和logAfter方法。
	*/
    public void doSomething() {  
        // 业务逻辑代码  
        System.out.println("Doing something...");  
    }  
}

(2) 有什么作用?
Spring AOP通过解耦业务逻辑与横切关注点、提供代码复用和模块化、支持灵活性和可扩展性、集成和扩展Spring框架以及简化事务管理和安全性控制等方面的作用

4、Spring DAO

Spring DAO(Data Access Object)是Spring框架中用于数据访问的对象。
DAO的主要作用:

  • 为应用程序提供访问数据库的接口,从而实现对数据的增删改查等操作。
  • 屏蔽了具体的实现技术的不同(如JDBC、Hibernate、MyBatis等),专注于业务逻辑的实现。
  • 屏蔽了具体持久化技术的异常

Spring还提供了两种事务管理方式:编程式事务管理和声明式事务管理
(1) 编程式事务管理

这种方式提供了最大的灵活性,但也可能导致代码冗余和复杂性增加。

@Service  
public class UserServiceImpl implements UserService {  
    @Autowired  
    private JdbcTemplate jdbcTemplate;  
    @Autowired  
    private PlatformTransactionManager transactionManager;  
    public void createUserWithProgrammingStyle(User user) {  
        TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);  
        transactionTemplate.execute(new TransactionCallbackWithoutResult() {  
            @Override  
            protected void doInTransactionWithoutResult(TransactionStatus status) {  
                try {  
                    // 假设这里是数据库操作  
                    jdbcTemplate.update("INSERT INTO users (name, email) VALUES (?, ?)", user.getName(), user.getEmail());  
                } catch (Exception ex) {  
                    // 出现异常,可以决定回滚  
                    status.setRollbackOnly();  
                }  
            }  
        });  
    }  
}

声明式事务管理
声明式事务管理则是通过注解或XML配置来声明哪些方法需要事务管理

/*
通过在类上或方法上添加@Transactional注解,告诉Spring该方法需要在事务的上下文中执行。
如果方法执行过程中抛出异常,Spring会根据配置来决定是否回滚事务。
*/
@Service  
@Transactional  
public class UserServiceImpl implements UserService {  
    @Autowired  
    private JdbcTemplate jdbcTemplate;  
    public void createUserWithDeclarativeStyle(User user) {  
        // 数据库操作  
        jdbcTemplate.update("INSERT INTO users (name, email) VALUES (?, ?)", user.getName(), user.getEmail());  
        // 如果有异常抛出,Spring会根据配置决定回滚事务  
    }  
}

5、Spring ORM

Spring ORM 是 Spring 框架中用于对象关系映射(Object-Relational Mapping,简称 ORM)的模块。它简化了使用 ORM 框架进行数据库访问的过程,整合了流行的 ORM 解决方案,如 Hibernate、MyBatis。

Spring ORM 有什么作用?
1、集成 ORM 框架
2、透明的事务管理
3、简化的数据访问
4、统一的异常处理
5、与其他 Spring 组件的协同工作

6、Spring Web

Spring Web是一个基于MVC(Model-View-Controller)的web框架,方便前后端数据的传输。
(1) 有什么作用?
Spring Web作用有:简化Web应用的开发、提供前端控制器、处理器映射与处理器、数据绑定与验证、视图解析与渲染、异常处理与拦截器等功能,以及与其他Spring组件的集成

(2) 一次请求的Spring Web的具体流程

1、发送请求:用户通过浏览器或其他客户端向服务器发送HTTP请求。 
2、前端控制器接收请求:在服务器端,Spring Web的前端控制器(通常是DispatcherServlet)会捕获到这个请求。
3、请求分发:前端控制器会查询处理器映射(HandlerMapping),根据请求的URL或其他信息找到匹配的处理器(通常是Controller)。
4、处理器执行:一旦找到了匹配的处理器,前端控制器会将请求传递给处理器执行。
5、模型绑定与返回:处理器执行完成后,通常会返回一个ModelAndView对象。这个对象包含了视图名称和数据模型。
6、视图解析与渲染:前端控制器接收到ModelAndView对象后,会查询视图解析器(ViewResolver)来确定使用哪个视图来展示数据。
   视图解析器根据视图名称找到相应的视图实现,如JSP、Thymeleaf等。然后,视图会使用数据模型进行渲染,生成最终的HTML页面。
7、响应返回:渲染完成后的HTML页面会作为HTTP响应返回给客户端。客户端接收到响应后,会解析并展示页面内容给用户。

7、Spring MVC

Spring MVC是一个基于Java的Web框架,它实现了MVC设计模式,将Web层进行职责解耦。其中,Model(模型)负责数据和业务逻辑,View(视图)负责显示数据,Controller(控制器)负责接收用户的请求并调用相应的业务逻辑处理请求,然后指定视图将处理结果展示给用户。

一次请求的Spring Web的具体流程,在上面Spring Web中已经说明了

每日鸡汤(1/1):生活就像一杯茶,不会苦一辈子,但总会苦一阵子。只要心中有阳光,生活就会充满希望。

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小江||小廖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值