spring基础

简介: 本文介绍了 Spring 与 SpringMVC 常用注解、RESTful 风格、IOC/DI 原理、Bean 作用域、自动装配流程及事务失效场景,帮助开发者深入理解 Spring 框架核心机制与常见问题。

spring常见注解和springmvc常见注解

springmvc: Spring 生态中专门处理 Web 层交互的框架

spring:@Component、@Autowired、@Configuration、@Aspect

springmvc:@RequestMapping、@GetMapping、@PathVariable

什么是restful风格

Restful 就像给接口定了一套 “通用语言”—— 用 URL 表示 “资源在哪里”,用 HTTP 方法表示 “要做什么操作”,用状态码表示 “操作结果”。

IOC DI

IOC DI
ioc控制反转,原来对象的创建由调用者自己实现,现在统一交给容器管理,加入到容器中,由容器进行创建通过使用常用注解 restcontroller(responese +controller)  service  mapper   comment等注解,进行加入容器
di依赖注入,由容器统一创建实例
通过使用Autowired  和resouce等注解进行注入
注入方式:三种(详解)
1.构造器注入
2.setter方法注入
3.接口注入

Spring 框架支持哪些 bean 的作用域(Scope)?

singleton 单例对象比如service层(单例包括懒汉 ,饿汉,双检索:加入了volatile关键字确保可见性和有序性,通过双重检查机制确保单例的唯一性);默认spring采用

prototype  原型,适合表单对象(有状态的),每次请求都会创建

request 请求 存活于当前请求中,一次请求创建一次  比如sprimgmvc

session 会话 存在于http会话期间

websocket  会话期间,作用与通信场景

application应用 作用与web应用

顺序:singleton ->prototype ->request->session->websockert->application

生命周期

bean是线程是安全的吗,为什么

自动装配的完整流程

  1. 通过compoentscan进行扫描
  2. 启动类加@SpringBootApplication,里面的@EnableAutoConfiguration开启自动配置;
  3. @EnableAutoConfiguration通过 SPI 机制,找到所有 Jar 包中META-INF/spring.factories里登记的 “自动配置类”;
  4. 每个自动配置类通过@ConditionalXXX注解判断是否需要生效(比如是否引入了对应依赖、是否已有手动配置等);
  5. 生效的自动配置类会帮你创建好对应的 Bean(比如 Tomcat、DataSource 等),放进 Spring 容器里;
  6. 你直接用@Autowired就能拿到这些 Bean,不用自己写配置。

总结:通过注解@SpringBootApplication中的@EnableAutoConfiguration扫描META-INF/spring.factories 通过@ConditionalXXX注解判断是否需要生效,最终将生效的配置类的bean加入到容器中

Spring 事务失效的常见场景有哪些?

事务,基于aop自动回滚机制基于动态代理实现的cglib(final修饰不行会创建没有接口实现类的子类进行代理)和jdk的代理(要求必须有接口实现类,实现的是接口的代理)

自己new的对象

异常未抛出,或未抛出回滚异常(runtimeexcption  error)

方法内调用方法(未通过代理对象调用),aop不会拦截内部,外部由代理对象调用,内部方法由目标对象,

非public方法(默认由cglib实现,cglib实现的是子类,非public不能被继承)

相关文章
|
3月前
|
XML Java Maven
@Bean`注解的使用方法及其作用
本文介绍了Spring框架中`@Bean`注解的使用方法及其作用,包括如何将第三方类库加入Spring容器,配置类与`@Configuration`的配合使用,以及通过`@ConditionalOnClass`、`@ConditionalOnMissingBean`等条件注解控制Bean的加载。同时讲解了Maven父子模块间的依赖关系及配置方式,帮助开发者更好地管理项目结构与依赖注入。
|
设计模式 算法 Java
工厂模式、模板模式和策略模式的混合使用
工厂模式又叫做工厂方法模式,是一种**创建型**设计模式,一般是在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
241 0
工厂模式、模板模式和策略模式的混合使用
|
3月前
|
XML JSON Java
Spring框架中常见注解的使用规则与最佳实践
本文介绍了Spring框架中常见注解的使用规则与最佳实践,重点对比了URL参数与表单参数的区别,并详细说明了@RequestParam、@PathVariable、@RequestBody等注解的应用场景。同时通过表格和案例分析,帮助开发者正确选择参数绑定方式,避免常见误区,提升代码的可读性与安全性。
|
3月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
415 3
|
JavaScript Java API
如何接入阿里云短信服务 (完整指南)
如何接入阿里云短信服务 (完整指南)
55588 1
|
3月前
|
负载均衡 Java Nacos
微服务架构中的服务注册与发现流程
本内容介绍了微服务架构中的服务注册与发现流程,包括服务注册中心(如Nacos)、服务提供者和调用者的角色分工。服务启动时自动注册信息至注册中心,调用者通过客户端负载均衡(如Spring Cloud Loadbalancer)选取服务实例进行远程调用。同时,内容还讲解了OpenFeign的工作原理,其作为HTTP客户端集成负载均衡,通过接口定义、代理生成、请求发送与结果解析,实现服务间的高效通信。
|
3月前
|
存储 前端开发 JavaScript
初始前端3
本文介绍了前端开发中的表单交互设计与数据绑定技巧,包括按钮点击事件处理、表单模型与实例的创建及使用、单向与双向数据绑定的区别与应用,以及表格数据展示等内容,适用于 Vue 框架下的 Element UI 组件实践。
|
3月前
|
负载均衡 Java 应用服务中间件
杂项10
Spring Cloud Alibaba 与 Spring Cloud 均基于 Spring Boot 构建微服务,遵循相同规范且组件可协同使用。区别在于,Spring Cloud Alibaba 使用 Nacos 实现服务发现与配置管理,推荐 Sentinel 作为断路器,并支持 Dubbo 与 Feign 远程调用。Nginx 可通过配置 upstream 实现负载均衡,作为反向代理,其“反向”体现在外网通过 Nginx 访问内部服务器。
|
3月前
|
消息中间件 自然语言处理 运维
微服务不是银弹!这4个设计原则让你少踩90%的坑
本文深入解析微服务架构与领域驱动设计(DDD)的核心理念与实践方法,帮助开发者正确拆分服务边界,避免常见误区,提升系统可维护性与扩展性,适用于复杂业务场景下的高效开发与团队协作。
349 1