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是线程是安全的吗,为什么
自动装配的完整流程
- 通过compoentscan进行扫描
- 启动类加@SpringBootApplication,里面的@EnableAutoConfiguration开启自动配置;
- @EnableAutoConfiguration通过 SPI 机制,找到所有 Jar 包中- META-INF/spring.factories里登记的 “自动配置类”;
- 每个自动配置类通过@ConditionalXXX注解判断是否需要生效(比如是否引入了对应依赖、是否已有手动配置等);
- 生效的自动配置类会帮你创建好对应的 Bean(比如 Tomcat、DataSource 等),放进 Spring 容器里;
- 你直接用@Autowired就能拿到这些 Bean,不用自己写配置。
总结:通过注解@SpringBootApplication中的@EnableAutoConfiguration扫描META-INF/spring.factories 通过@ConditionalXXX注解判断是否需要生效,最终将生效的配置类的bean加入到容器中
Spring 事务失效的常见场景有哪些?
事务,基于aop自动回滚机制基于动态代理实现的cglib(final修饰不行会创建没有接口实现类的子类进行代理)和jdk的代理(要求必须有接口实现类,实现的是接口的代理)
自己new的对象
异常未抛出,或未抛出回滚异常(runtimeexcption error)
方法内调用方法(未通过代理对象调用),aop不会拦截内部,外部由代理对象调用,内部方法由目标对象,
非public方法(默认由cglib实现,cglib实现的是子类,非public不能被继承)
 
  
                            