Spring 面试题, Spring 中的 DI 是什么?
Spring 面试题, Spring 中的 DI 是什么?
QA
Step 1
Q:: 什么是Spring中的依赖注入(DI)?
A:: 依赖注入(Dependency Injection, DI)是Spring框架的核心特性之一。它是一种设计模式,用于将对象的依赖关系(即对象需要的资源或服务)在运行时由容器注入到对象中,而不是由对象自己创建或查找这些依赖。DI主要有两种方式:构造器注入和Setter方法注入。在Spring中,DI通过配置文件(XML或Java配置)或者注解(如@
Autowired)实现。
Step 2
Q:: 构造器注入和Setter方法注入的区别是什么?
A:: 构造器注入通过对象的构造函数传递依赖,确保在对象实例化时所有依赖都已经提供。这种方式适合于依赖较少且构造函数参数有限的场景。Setter方法注入通过对象的setter方法来注入依赖,适合需要可选依赖或较多依赖的情况。构造器注入更有助于实现不可变对象,而Setter注入提供更大的灵活性。
Step 3
Q:: Spring如何管理Bean的生命周期?
A:: Spring通过Bean工厂(BeanFactory)或应用上下文(ApplicationContext)管理Bean的生命周期,包括实例化、依赖注入、初始化和销毁。开发者可以通过实现特定接口(如InitializingBean和DisposableBean)或使用注解(如@PostConstruct和@
PreDestroy)自定义Bean的初始化和销毁过程。此外,Spring的配置文件或注解也可以指定Bean的作用域(如单例或原型),影响Bean的生命周期管理。
Step 4
Q:: 什么是Spring的IoC容器?
A:: IoC(Inversion of Control,
控制反转)容器是Spring框架的核心,它负责管理对象的创建、配置和生命周期。通过IoC容器,应用程序中的对象可以在不直接依赖于具体实现的情况下被实例化和管理。Spring的IoC容器通过依赖注入实现控制反转,使得对象之间的依赖关系由容器处理,从而降低了耦合度,提升了代码的可测试性和可维护性。
Step 5
Q:: 在Spring中如何实现AOP?
A:: Spring通过代理模式实现AOP(面向切面编程)。开发者可以使用@Aspect注解和@Around、@Before、@
After等注解定义切面(Aspect)和切入点(Pointcut)。这些切入点可以插入到目标方法的执行流程中,从而实现横切关注点的分离,如日志记录、事务管理等。Spring AOP通常用于方法级别的切面,适合对服务层或DAO层的业务逻辑进行增强。