马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
🌱 第一部门:Spring 核心原理与使用
1. 什么是 Spring
Spring 是一个开源的 Java 企业级开辟框架,旨在简化 Java 企业应用程序开辟。它核心思想是控制反转(IoC)和面向切面编程(AOP),使开辟者能更轻松地创建松耦合、可测试和易维护的应用程序。
它提供了对 Bean 的生命周期管理、依赖注入、声明式事件管理、AOP 支持等功能,并与多种其他框架(如 Hibernate、MyBatis、Struts)高度兼容,形成了完备的企业级应用办理方案。
2. 什么是 SpringMVC
SpringMVC 是 Spring 框架中的一个模块,是一个基于 Servlet 的 Web 框架,遵照 MVC(Model-View-Controller)计划模式。它用于构建 Web 应用的表现层,负责处置惩罚请求和返反响应,核心处置惩罚器是 DispatcherServlet,它协调整个请求流程。
3. 什么是 MyBatis
MyBatis 是一款持久层框架,通过 XML 或注解将 SQL 语句和 Java 方法关联起来,使开辟者能够直接控制 SQL 的执行过程和映射规则,具有灵活、高效的特点。
它制止了 Hibernate 的全主动 ORM 的复杂性,允许开辟者编写原生 SQL,使 SQL 更加可控、易调试。
4. Spring 的核心
- IoC 容器:管理对象的生命周期与依赖关系。
- AOP 支持:通过切面简化日志
、安全、事件等横切关注点。
- 容器配置方式多样:支持 XML、注解、Java 配置类。
- 事件管理:声明式和编程式事件支持。
- 模块化架构:包括 Beans、Context、Core、AOP、JDBC 等模块。
5. Spring 的长处
- 解耦合:IoC 机制有效低落模块间耦合。
- 高扩展性:提供大量扩展点与标准接口。
- 易测试:可通过依赖注入替换真实对象。
- 广泛整合:与主流框架、库无缝集成。
- 轻量级:按需加载模块,制止臃肿。
6. @Autowired 与 @Resource 区别
特性@Autowired@Resource所属标准SpringJSR-250 标准注入方式默认按类型(可配合 @Qualifier)默认按名称(可使用 name 属性)实用范围Spring 内部保举Java 通用注解依赖检查可设置 required=false不支持 7. Spring 的生命周期(Bean 生命周期)
- 加载 Bean 的定义信息(XML、注解、JavaConfig)
- 实例化 Bean(反射)
- 设置属性(依赖注入)
- PostProcessor 后置处置惩罚
- Bean 预备就绪使用
- 容器销毁时调用销毁方法(如 @PreDestroy 或 destroy-method)
8. 依赖注入的方式
- 构造器注入:通过构造方法传入依赖(保举用于不可变对象)。
- Setter 注入:通过属性 setter 方法注入。
- 字段注入:使用 @Autowired 注解直接注入(不保举用于测试)。
9. Spring 中 Bean 是单例的吗?
默认是单例(singleton)。Spring 容器中 Bean 默认作用域是单例,也可配置为:
- prototype:每次获取都新建实例。
- request:每个 HTTP 请求一个实例(Web 项目)。
- session:每个会话一个实例。
- application:每个 ServletContext 一个实例。
- websocket:每个 WebSocket 一个实例。
10. 四大注解区别
注解描述所在层次@Component标识为普通组件(通用)任意层@Controller标识控制层组件(处置惩罚请求)表现层@Service标识服务层组件(业务逻辑)业务逻辑层@Repository标识持久层组件(数据访问)DAO 层 11. 控制反转与依赖注入
- 控制反转(IoC):将对象创建和管理的控制权交给容器,程序不再主动创建对象,而是由容器注入。
- 依赖注入(DI):容器在创建对象时,将它依赖的资源注入进来。
区别:IoC 是一种思想,DI 是实现 IoC 的技术手段。
🔁 第二部门:AOP 与常用注解
12. Spring AOP 术语
- Aspect(切面):定义横切逻辑的模块。
- JoinPoint(连接点):程序执行过程中可插入切面的点,如方法调用。
- Pointcut(切入点):定义哪些 JoinPoint 被织入。
- Advice(关照):切面在连接点执行的动作(如前置、后置)。
- Weaving(织入):将切面逻辑加入到目标对象的过程。
13. 关照的类型
- @Before:方法前执行
- @After:方法后执行(无论乐成或异常)
- @AfterReturning:方法乐成返回后执行
- @AfterThrowing:方法抛出异常后执行
- @Around:围绕整个方法执行(最强大)
14. 注解作用阐明
- @Configuration:标识配置类,等价于 XML 配置文件
- @Bean:定义 Bean 方法,注册到容器中
- @Controller:标识控制器类,用于处置惩罚请求
- @Value:注入配置文件中的值
🌐 第三部门:SpringMVC 深入
15. MVC 模式
MVC 是一种计划模式:
- Model:数据模型(如实体类、Service)
- View:视图(如 JSP、Thymeleaf、HTML)
- Controller:控制器,处置惩罚请求、调用服务、返回视图
16. SpringMVC 工作原理
- 用户请求由前端控制器 DispatcherServlet 吸收
- 查找 HandlerMapping 获取对应 Controller
- 由 HandlerAdapter 调用处置惩罚器方法
- 方法执行返回 ModelAndView
- 视图解析器解析视图名
- 响应渲染返回给用户
17. SpringMVC 长处
- 请求处置惩罚流程清晰、可扩展性强
- 注解简化配置
- 支持 RESTful URL
- 与 Spring 紧密集成
18. 常用注解作用
- @RequestMapping:映射 URL 到方法
- @ResponseBody:返回 JSON 或 XML
- @PathVariable:获取路径参数
- @RequestParam:获取请求参数
💾 第四部门:MyBatis 专项
19. BeanFactory vs ApplicationContext
特性BeanFactoryApplicationContext加载方式延迟加载预加载单例 Bean国际化支持无有变乱机制不支持支持保举使用场景轻量应用企业级开辟保举 20. 数据库事件的 ACID 特性
- 原子性(Atomicity):操纵要么全部乐成,要么全部失败。
- 同等性(Consistency):事件执行前后,数据保持同等。
- 隔离性(Isolation):并发事件之间互不干扰。
- 持久性(Durability):事件提交后修改永久保存。
21. MyBatis 长处
- SQL 可控,便于优化
- 映射灵活,可自定义规则
- 轻量,易与 Spring 集成
- 支持动态 SQL
22. 常用标签阐明
- <select>:查询语句
- <insert>:插入语句
- <update>:更新语句
- <delete>:删除语句
- <resultMap>:复杂效果映射
- <if>、<where>、<foreach>:动态 SQL 控制
23. #{} 与 ${} 区别
表达式描述安全性#{}占位符,预编译传参安全(防 SQL 注入)${}直接拼接字符串不安全(易被注入) 24. 实现模糊查询的方式
- <!-- XML 映射方式 -->
- <select id="findByName" resultType="User">
- SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%')
- </select>
复制代码- // Mapper 接口方式
- List<User> findByName(String name);
复制代码
|