一切福田,不離方寸,從心而覓,感無不通。

Java面试准备

基础 Spring相关 Spring, Spring MVC, SpringBoot是什么关系? Spring 包含了多个功能模块,Spring MVC是其中一个模块,专门处理Web请求。Spring Boot 只是简化了配置,如果需要构建 MVC 架构的 Web 程序,还是需要使用 Spring MVC 作为 MVC 框架,只是说 Spring Boot 简化了 Spring MVC 的很多配置,真正做到开箱即用。 谈一谈对Spring IoC的理解 IoC(Inversion of Control:控制反转) 将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。为什么叫控制反转? 控制:指的是对象创建(实例化、管理)的权力 反转:控制权交给外部环境(Spring 框架、IoC 容器) @Component 和 @Bean 的区别? @Component 注解作用于类,而@Bean注解作用于方法。 当我们引用第三方库中的类需要装配到 Spring容器时,则只能通过 @Bean来实现。 @Autowired 和 @Resource 的区别? @Autowired 属于 Spring 内置的注解,默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口的实现类)。 当一个接口存在多个实现类的话,byType这种方式就无法正确注入对象了,因为这个时候 Spring 会同时找到多个满足条件的选择,默认情况下它自己不知道选择哪一个。这种情况下,注入方式会变为 byName(根据名称进行匹配),这个名称通常就是类名(首字母小写)。 通过 @Qualifier 注解可以来显式指定名称而不是依赖变量的名称。@Resource属于 JDK 提供的注解,默认注入方式为 byName。如果无法通过名称匹配到对应的 Bean 的话,注入方式会变为byType。 @Resource 有两个比较常用的属性:name(名称)、type(类型)。如果仅指定 name 属性则注入方式为byName,如果仅指定type属性则注入方式为byType,如果同时指定name 和type属性(不建议这么做)则注入方式为byType+byName。 注入Bean的方法有哪些? 构造函数注入:通过类的构造函数来注入依赖项。 Setter 注入:通过类的 Setter 方法来注入依赖项。 Field(字段) 注入:直接在类的字段上使用注解(如 @Autowired 或 @Resource)来注入依赖项。 为什么Spring 官方推荐构造函数注入? 依赖完整性:确保所有必需依赖在对象创建时就被注入,避免了空指针异常的风险。 […]

龙生   17 Dec 2025
View Details