目录
什么是Spring 开发框架?
说说Spring 的 IOC 和 DI?
简述IoC(控制反转)及在 Spring 中的实现
说说Spring IOC 容器的基本概念?
说说Spring IoC 的实现机制?
说说Spring IoC 容器?
简述Spring ApplicationContext
说说Spring Bean 的生命周期
说说在 Spring Bean 的生命周期中可扩展的重要方法
说说Spring Bean 的初始化和销毁方法
如何在 Spring 中实现自定义的 Bean 初始化和销毁方法
如何在 Spring 中定义一个 Bean 的作用域
基于 Java 配置类开启注解装配
基于 XML 配置文件开启注解装配
启用自动装配注解
详细说将类声明为 Spring 的 bean 的注解有哪些方式
使用 @Component 及其衍生注解
使用 @Bean 注解
@Service
@Repository
@Configuration
@Bean
详细说 @Component 和 @Bean 的区别
定义位置和方式
作用范围和语义
Bean 的命名方式
依赖注入的灵活性
@Component、@Controller、@Repository、@Service 的区别
@Component
@Controller
@Repository
@Service
说说@Required 注解的作用
说说@Autowired 注解的作用
在属性上使用 @Autowired
在构造函数上使用 @Autowired
在方法上使用 @Autowired
@Autowired 和 @Resource 之间的区别
来源和所属框架
注入方式和匹配策略
可注入的资源类型
@Qualifier 注解的作用
详细讲讲Spring 的自动装配
自动装配的方式
自动装配的实现机制
自动装配的优点
什么是 bean 的自动装配
不同方式的自动装配,spring 自动装配 bean 有哪些方式
按类型自动装配
按名称自动装配
基于构造函数的自动装配
基于 Setter 方法的自动装配
说说使用 @Autowired 注解自动装配的过程
Sping 构造器依赖注入和 Setter 方法注入的区别
注入时机
注入的强制性
可变性
可测试性
解释什么是 Spring Bean 的装配方式
基于 XML 配置文件的装配
基于 Java 配置类的装配
基于注解的自动装配
基于构造函数的装配
基于 Setter 方法的装配
什么是 setter 注入和构造器注入?它们之间有什么区别
setter 注入
构造器注入
两者的区别
Sprint 配置 Bean 的方式
基于 XML 配置文件
基于 Java 配置类
基于注解自动装配
Spring 提供的配置方式有哪些?
XML 配置方式
Java 配置方式
注解配置方式
混合配置方式
Spring 基于 xml 注入 bean 的方式是怎样?
构造函数注入
Setter 方法注入
内部 Bean 注入
Spring 中出现同名 bean 的处理方式
基于 XML 配置
基于注解注入
解决同名 bean 问题的方法?
Spring 的内部 bean
Spring 的 AOP 理解
核心概念
工作原理
优势
Spring AOP 里面的关键词有哪些?
切面(Aspect)
连接点(Join Point)
通知(Advice)
切入点(Pointcut)
目标对象(Target Object)
代理对象(Proxy Object)
Spring 通知(Advice)的类型有哪些
前置通知(Before Advice)
后置通知(After Advice)
返回通知(After Returning Advice)
异常通知(After Throwing Advice)
环绕通知(Around Advice)
说说Spring 的 Advice 的执行顺序
前置通知(Before Advice)
环绕通知(Around Advice)
后置通知(After Advice)
返回通知(After Returning Advice)
异常通知(After Throwing Advice)
AOP 的定义
Spring 实现 AOP 的方式
创建切面类
定义通知方法
定义切入点表达式
切入点的定义
定义切入点表达式的方式
连接点(Joinpoint)及其与切入点的区别
连接点的定义
与切入点的区别
在 Spring AOP 中使用 @Around 注解实现环绕通知
创建切面类并添加 @Aspect 注解
定义环绕通知方法并添加 @Around 注解
定义切入点表达式
@AspectJ 注解的作用
定义切面类
定义通知方法
定义切入点表达式
Spring AOP 和 AspectJ AOP 的区别
实现方式
功能完整性
性能
开发复杂性
应用场景
声明式的事务管理及 Spring 的实现方式
声明式事务管理的定义
Spring 实现声明式事务管理的方式
Spring 事务的实现方式
Spring 事务的实现原理
Spring 中如何配置事务
解释一下 Spring 事务的隔离级别
如何解决 Spring 事务中的脏读、不可重复读和幻读问题
Spring 事务的传播行为有哪些?分别在什么情况下使用?
什么是 Spring 事务?有哪些特性?
Spring MVC 的请求处理流程是怎样的
模型(Model)与视图(View)在 Spring MVC 中的角色
如何使用 @ModelAttribute 注解进行模型数据绑定
Spring MVC 中如何处理异常
在 Spring MVC 中实现文件上传
什么是视图解析器(ViewResolver)
Spring Boot 的优点
Spring Boot Starter
在 Spring Boot 中实现自动配置
Spring Boot 的配置文件 application.properties 的作用
如何使用 Spring Boot Actuator 监控应用
Spring Boot CLI
在 Spring Boot 中实现自定义的错误页面
在 Spring Boot 中使用 Profiles 管理不同环境的配置
Spring Boot 的自动配置是如何实现的
在 Spring Boot 中进行配置文件的管理
Spring Boot 中的 starter 有什么作用
如何在 Spring Boot 中实现热部署
使用 Spring Boot DevTools
使用 JRebel
配置 IDE 的热部署功能
Spring 如何支持 JDBC 访问数据库
提供统一的异常处理
提供模板类简化操作
支持数据库连接池
提供事务管理支持
解释 Spring 中的 ORM 支持,常见的 ORM 框架有哪些
常见的 ORM 框架
Spring 对 ORM 框架的支持
如何使用 Spring Data JPA 进行数据访问
添加依赖
定义实体类
创建数据访问接口
在业务逻辑中使用数据访问接口
Spring 中如何使用 JdbcTemplate
配置数据源
创建 JdbcTemplate 实例
使用 JdbcTemplate 执行数据库操作
如何在 Spring 中实现数据库的多数据源支持
配置多个数据源
创建多个 JdbcTemplate 实例
确定数据源的使用策略
Spring Security 的主要功能
身份验证
授权
防止跨站请求伪造(CSRF)
会话管理
安全过滤链
集成其他框架
身份验证(Authentication)与授权(Authorization)
身份验证
授权
两者关系
在 Spring 中配置基于表单的登录
依赖配置
配置类创建
表单页面设置
注销配置
解释 @PreAuthorize 注解的作用
如何实现基于角色的访问控制
定义角色
配置用户角色关系
配置安全规则
方法级别权限控制
在 Spring Security 中,如何配置 CSRF 保护
启用 CSRF 保护
生成 CSRF 令牌
验证 CSRF 令牌
排除不需要 CSRF 保护的请求
JDK 动态代理和 CGLIB 动态代理的区别
实现原理
性能方面
适用场景
局限性
DataSource
JdbcTemplate
NamedParameterJdbcTemplate
SimpleJdbcInsert
SimpleJdbcCall
BeanDefinition 的作用
描述 Bean 的基本信息
支持 Bean 的配置和定制
实现 Bean 的懒加载和延迟初始化
支持 Bean 的继承和抽象定义
作为 Spring 容器内部管理的核心数据结构
Bean 实例化中的扩展
自定义实例化逻辑
后置处理器
初始化和销毁方法
工厂方法实例化
基于注解的实例化
JavaBean 和 SpringBean 和对象的区别
JavaBean
SpringBean
对象
三者关系
RequestMapping 注解的作用
映射请求路径
支持多种请求方式
什么是Spring 开发框架?
Spring 是一个开源的 Java 应用程序框架,它为企业级应用开发提供了全面的基础设施支持。其核心特性包括依赖注入(DI)、面向切面编程(AOP)、数据访问抽象以及事务管理等。
</