Skip to content

Spring常见问题

更新: 5/11/2025 字数: 0 字 时长: 0 分钟

Spring啊!最喜欢的框架!我愿称之为Java野爹,在某种程度上,我认为Java现在能保持活力有很大一部分都是Spring的功劳(Oracle真不熟吧)

这里我们就来聊聊这个伟大的框架

Spring两大理念

Spring的立身之本就是他的两大理念了,也正是这三大理念改变了Java开发当时的样子

  • IOC/控制反转: IOC在Spring中的体现就是Spring Bean的操作,我们通过DI(依赖注入)来自动的创建Bean,并通过Spring提供的注解来将其注入到当前的类里 IOC本质上是将一个类的创建与管理交给了Spring来托管,这个对象的生命周期完全由Spring来负责,开发者只需要写明,引用和使用即可
  • AOP/面向切面: 面向切面编程是说将一些方法的公共部分(切面)进行封装,然后使用注解的方式,让加上了注解的方法在执行前后自动使用这些封装的部分。Spring在设计的时候大量使用了AOP的思想,进而使得代码与代码间,模块与模块间的耦合降到了很低的一个程度 Spring的AOP由JDK动态代理和CGLIB两种

依赖注入(DI)/@Autowired如何使用

就三种:构造方法,set方法和字段,只要有一个就能实现自动注入

聊聊AOP

AOP基于动态代理技术实现,所谓动态代理就是在运行期通过反射动态的对一个类进行代理,有别于静态代理的被代理类需要完整的实现一个类,动态代理可以代理一个接口下的多个实现类,然后使用JDK提供的API或者CGLib来创建这个类

反射干什么用的

Java的反射机制允许通过反射类在运行时获取一个类的所有信息(方法,属性),通过这个方法,我们可以操作代码在运行期完成一些操作

  • 访问类的类名,包名,方法名等
  • 调用类的方法
  • 使用反射创建实例
  • 访问和修改实例的字段参数

Spring的事务什么时候会失效

当同一个类的方法互相调用时,原因是因为这个过程没有经过代理,也就不被Spring控制

Spring Bean的生命周期

在Spring启动时会自动搜索包下的Bean并进行实例化,这个过程Spring会自行的控制实例化的顺序,保证每一个类都能成功的实例化,Bean准备就绪后就会一直的保存在应用上下文中,除非实现了DisposableBean接口,Spring才可能调用他的destory方法,来对其进行销毁

Bean单例吗

默认单例,只会被创建一次,但是可以通过将Bean的scope修改为”prototype“来实现多例

本站访客数 人次      本站总访问量