目录
[3、Spring Bean是什么?](#3、Spring Bean是什么?)
[7、什么是Spring AOP?](#7、什么是Spring AOP?)
[12、什么是Spring RestTemplate?](#12、什么是Spring RestTemplate?)
[15、Spring Bean的生命周期是什么?](#15、Spring Bean的生命周期是什么?)
[25、什么是 Spring IoC 容器?它有哪些类型?](#25、什么是 Spring IoC 容器?它有哪些类型?)
[26、什么是 Spring 事务管理?如何实现事务管理?](#26、什么是 Spring 事务管理?如何实现事务管理?)
[27、如何在 Spring 中处理跨域请求(CORS)?](#27、如何在 Spring 中处理跨域请求(CORS)?)
[28、什么是 Spring 的 Profile?如何使用它?](#28、什么是 Spring 的 Profile?如何使用它?)
[29、解释 Spring 中的依赖注入方式及其区别?](#29、解释 Spring 中的依赖注入方式及其区别?)
[30、spring 中通知方式有哪些?](#30、spring 中通知方式有哪些?)
1、什么是Spring框架?
Spring是一个开源的Java平台,提供全面的基础设施支持,简化了Java企业级应用的开发。它的核心特性包括控制反转(IOC)和面向切面的编程(AOP)。
2、什么是依赖注入(DI)?
依赖注入是一种设计模式,它允许对象通过构造函数、setter方法或接口来获取它们的依赖对象,而不是在内部自己创建它们。
3、Spring Bean是什么?
Spring Bean是由Spring IOC容器管理的一个对象。Bean由容器实例化、配置和组装。
4、@Autowired注解的作用是什么?
@Autowire用于自动装配Spring Bean。
Spring会自动在应用上下文中查找和注入与属性类型匹配的Bean。
5、Spring中的Bean作用域有哪些?
Spring支持五种Bean作用域:singleton、prototype、request、session和global-session。
6、如何在Spring中配置事务管理?
可以使用@Transactional注解配置事务管理。
它可以应用在类或方法上,Spring会自动管理这些方法的事务。
7、什么是Spring AOP?
Spring AOP(面向切面的编程)允许你通过分离关注点(如日志记录、事务管理)来更好地管理横切关注点。它使用动态代理或CGLIB生成AOP代理对象。
8、@Component注解的作用是什么?
@Component是一个通用的Spring Bean注解,用于将类标识为Spring管理的组件。其它特定类型的注解包括@Controller、@Service和@Repository。
9、什么是Spring的核心模块?
Spring的核心模块包括:Spring Core、Spring AOP、Spring ORM、Spring Web、Spring Security等。
10、如何在Spring中定义Bean的初始化和销毁方法?
可以使用@Bean注解的initMethod和destroyMethod属性,或在Bean类中定义@PostConstruct和@PreDestroy注解的方法。
11、如何在Spring中处理异常?
可以使用@ControllerAdvice和@ExceptionHandler注解来处理全局异常和特定控制器异常。
12、什么是Spring RestTemplate?
RestTemplate是Spring提供的一个同步客户端,用于简化与RESTful服务的交互。它提供了多种便捷的方法来执行HTTP请求和处理响应。
13、如何在Spring中实现文件上传?
可以使用Spring MVC的MultipartFile接口来处理文件上传。需要在配置中启用multipart支持,并在控制器中使用MultipartFile接收上传的文件。
14、如何在Spring中使用缓存?
可以使用Spring Cache抽象和@Cacheable、@CachePut、@CacheEvict等注解来简化缓存的使用。需要配置缓存管理器和缓存提供者(如EhCache、Hazelcast)。
15、Spring Bean的生命周期是什么?
1.Bean的实例化
2.属性注入
3.初始化
4.销毁
16、Spring管理Bean的注解?
1、@Component
● 标识普通组件
2、@Repository
● 标识持久层的组件
3、@Service
● 标识业务逻辑层组件
4、@Controller
● 标识控制器层组件
5、@Bean
● 添加到方法上将方法返回的对象放入IOC容器
17、Spring管理Bean的那四个注解可以混用吗?
● 从让Spring帮我们创建对象层面考虑,四个注解可以混用,但是不建议这样,还是建议按照规定的来
● 如果是控制器层的组件必须加@Controller注解,不能加其他的
18、Spring给属性注入值的注解
1、@Autowired
● 注入IOC容器中其他类型的Bean
2、@Value
● 注入字面量值
3、@Resource
● JDK提供的
4、@Inject
● 根据类型注入
19、AOP术语
● 横切关注点
被抽离之前的同一类的非核心代码
● 切面
横切关注点抽离出来之后所在的类
● 通知
横切关注点抽离之后所在的方法
● 连接点
横切关注点被抽离之前所在方法的位置
● 切入点
获取连接点的表达式
● 目标对象
被代理的对象
● 代理对象
20、AOP相关注解
● @Aspect
● 声明一个类是切面
● @Before
● 声明前置通知
● @After
● 声明后置通知
● @AfterReturning
● 声明返回通知
● @AfterThrowing
● 声明异常通知
● @Around
● 声明环绕通知
● @Pointcut
● 声明切入点表达式
● @Order
● 声明切面的优先级
21、事务的四个特性
原子性、一致性、隔离性、持久性
22、事务并发执行时出现的三个问题?
脏读、不可重复读、幻读
23、事务的隔离级别?
按隔离强度由低到高:
● 读未提交(READ_UNCOMMITED)
● 脏读、不可重读读、幻读都会出现
● 读已提交(READ_COMMITED)
● 可以避免脏读,不可重复读和幻读仍然出现
● 可重复读(REPEATABLE_READ)
● 可以批量脏读和不可重复读,幻读仍会出现
● 将操作的数据上了锁
● MySQL默认的隔离级别
● 串行化(SERIALIZABLE)
● 脏读、不可重复读和幻读都可以避免
● 将表上锁
● 隔离级别不是越高越好,隔离级别越高越不利于并发
24、Spring管理Bean的方式?
1、纯XML方式
● 在Spring的配置文件中使用bean标签配置
2、XML+注解的方式
● 在Spring的配置文件中配置自动扫描的包
● 在我们创建的类上添加Spring提供的管理Bean的注解
3、配置类+注解的方式
● 在类上添加@Configuration注解声明一个类是配置类
● 在类中创建方法并在方法上添加@Bean注解
4、完全注解开发
● 在SpringBoot环境下实现
25、什么是 Spring IoC 容器?它有哪些类型?
Spring IoC (Inversion of Control) 容器负责管理对象的生命周期和依赖注入。
BeanFactory:基本的 IoC 容器,提供基础的依赖注入功能。
ApplicationContext:继承自 BeanFactory,提供更多企业级功能,如事件传播、声明式机制、国际化等。
26、什么是 Spring 事务管理?如何实现事务管理?
Spring 事务管理用于简化数据库事务的管理。对数据库事务的抽象封装,提供声明式和编程式两种管理方式。
可以通过以下两种方式实现事务管理:
编程式事务管理:使用 TransactionTemplate 或 PlatformTransactionManager。
声明式事务管理:使用 @Transactional 注解。
27、如何在 Spring 中处理跨域请求(CORS)?
可以通过以下方式在 Spring 中处理跨域请求:
使用 @CrossOrigin 注解在控制器或方法上允许跨域请求。
在配置类中实现 WebMvcConfigurer 接口,并重写 addCorsMappings 方法进行全局配置。
28、什么是 Spring 的 Profile?如何使用它?
Spring Profile 用于在不同的环境中启用和禁用特定的配置。使用步骤:
在配置文件中使用 @Profile 注解标记 bean 或配置类。
在应用程序启动时,通过 spring.profiles.active 属性指定激活的 profile。
29、解释 Spring 中的依赖注入方式及其区别?
Spring 提供三种依赖注入方式:
构造器注入:通过构造器参数注入依赖,适用于强制依赖。
Setter 注入:通过 setter 方法注入依赖,适用于可选依赖。
字段注入:通过反射直接注入字段,简化代码,但不推荐使用。
30、spring 中通知方式有哪些?
前置通知(Before Advice):在目标方法执行之前执行
后置通知(After Advice):在目标方法执行之后执行,不管方法是否成功完成
返回通知(After Returning Advice):在目标方法成功执行之后执行
异常通知(After Throwing Advice):在目标方法抛出异常后执行
环绕通知(Around Advice):在目标方法执行前后都执行,可以完全控制目标方法的执行。