

Spring bean 并没有可变的状态 (比如 Service 类和 DAO 类),所以在某种程度上说 Spring 的单例 bean 是线程安全的。


Spring 容器在进行实例化时,会将 xml 配置的
<bean>的信息封装成一个BeanDefinition对象,Spring 根据BeanDefinition来创建 Bean 对象,里面有很多的属性用来描述 Bean
2. 初始化赋值和销毁Bean



三级缓存解决循环依赖

一级缓存作用:限制 bean 在 beanFactory 中只存一份,即实现 singleton scope,解决不了循环依赖 二级缓存:缓存早期的 bean 对象(生命周期还没走完),二级缓存不能解决对象增强问题 三级缓存:缓存的是 ObjectFactory,表示对象工厂,用来创建某个对象的

AOP 称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
常见的 AOP 使用场景:


获取请求的用户名、请求方式、访问地址、模块名称、登录 ip、操作时间,记录到数据库的日志表中

Spring 支持编程式事务管理和声明式事务管理两种方式。

Spring 事务失效的场景有哪些




视图阶段(老旧 JSP 等)

前后端分离阶段(接口开发,异步)


点击进入 @SpringBootApplication 注解,可看见其由几个注解组成

@SpringBootConfiguration :该注解与 @Configuration 注解作用相同,用来声明当前也是一个配置类。@ComponentScan :组件扫描,默认扫描当前引导类所在包及其子包。@EnableAutoConfiguration :SpringBoot 实现自动化配置的核心注解。其中 @EnableAutoConfiguration 又由几个注解组成

点开 spring.factories 中其中一个 configuration,可看见

Spring 的常见注解有哪些?
| 注解 | 说明 |
|---|---|
| @Component、@Controller、@Service、@Repository | 使用在类上用于实例化Bean |
| @Autowired | 使用在字段上用于根据类型依赖注入 |
| @Qualifier | 结合@Autowired一起使用用于根据名称进行依赖注入 |
| @Scope | 标注Bean的作用范围 |
| @Configuration | 指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解 |
| @ComponentScan | 用于指定 Spring 在初始化容器时要扫描的包 |
| @Bean | 使用在方法上,标注将该方法的返回值存储到Spring容器中 |
| @Import | 使用@Import导入的类会被Spring加载到IOC容器中 |
| @Aspect、@Before、@After、@Around、@Pointcut | 用于切面编程(AOP) |
| SpringMVC 常见的注解有哪些? |
| 注解 | 说明 |
|---|---|
| @RequestMapping | 用于映射请求路径,可以定义在类上和方法上。用于类上,则表示类中的所有的方法都是以该地址作为父路径 |
| @RequestBody | 注解实现接收http请求的json数据,将json转换为java对象 |
| @RequestParam | 指定请求参数的名称 |
| @PathViriable | 从请求路径下中获取请求参数(/user/{id}),传递给方法的形式参数 |
| @ResponseBody | 注解实现将controller方法返回对象转化为json对象响应给客户端 |
| @RequestHeader | 获取指定的请求头数据 |
| @RestController | @Controller + @ResponseBody |
| Springboot 常见注解有哪些? |
| 注解 | 说明 |
|---|---|
| @SpringBootConfiguration | 组合了- @Configuration注解,实现配置文件的功能 |
| @EnableAutoConfiguration | 打开自动配置的功能,也可以关闭某个自动配置的选 |
| @ComponentScan | Spring组件扫描 |
| 注解 | 说明 |
|---|---|
| @Component、@Controller、@Service、@Repository | 使用在类上用于实例化Bean |
| @Autowired | 使用在字段上用于根据类型依赖注入 |
| @Qualifier | 结合@Autowired一起使用用于根据名称进行依赖注入 |
| @Scope | 标注Bean的作用范围 |
| @Configuration | 指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解 |
| @ComponentScan | 用于指定 Spring 在初始化容器时要扫描的包 |
| @Bean | 使用在方法上,标注将该方法的返回值存储到Spring容器中 |
| @Import | 使用@Import导入的类会被Spring加载到IOC容器中 |
| @Aspect、@Before、@After、@Around、@Pointcut | 用于切面编程(AOP) |
| 注解 | 说明 |
|---|---|
| @RequestMapping | 用于映射请求路径,可以定义在类上和方法上。用于类上,则表示类中的所有的方法都是以该地址作为父路径 |
| @RequestBody | 注解实现接收http请求的json数据,将json转换为java对象 |
| @RequestParam | 指定请求参数的名称 |
| @PathViriable | 从请求路径下中获取请求参数(/user/{id}),传递给方法的形式参数 |
| @ResponseBody | 注解实现将controller方法返回对象转化为json对象响应给客户端 |
| @RequestHeader | 获取指定的请求头数据 |
| @RestController | @Controller + @ResponseBody |


本文作者:peepdd864
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!