首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SSM框架从入门到入土(Spring注解开发全攻略,整合Mybatis)

SSM框架从入门到入土(Spring注解开发全攻略,整合Mybatis)

作者头像
北极的代码
发布2026-04-22 18:54:55
发布2026-04-22 18:54:55
520
举报

目录

定义bean

衍生注解

纯注解开发模式:

bean的作用范围:

bean的生命周期:

使用注解方式的依赖注入:

第三方bean管理:

第三方简单类型依赖注入:

第三方引用类型依赖注入;

XML配置对比注解配置

1. 没有整合前的状态

2. Spring 整合 MyBatis 的过程

第一步:建立连接通道

第二步:菜单标准化

第三步:自动接单系统

3. 完整的点餐流程

顾客点餐(Service 层)

后厨做菜(MyBatis 执行)

4. 关键角色解释

SqlSessionFactoryBean


定义bean

使用@Component定义bean @Component("bookDao") public class BookDaoImpl implements BookDao { @Componentpublic class BookServiceImpl implements BookService { 核心配置文件中通过组件扫描加载bean <context:component-scan base-package="com.itheima"/>

衍生注解

Spring提供@Component注解的三个衍生注解

@Controller:用于表现层bean定义

@Service:用于业务层bean定义 @Repository:用于数据层bean定义

纯注解开发模式:

Spring3.0开启了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道Java类代替Spring核心配置文件。

@Configuration注解用于设定当前类为配置类 @Componentscan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

Spring3.0开启了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象

bean的作用范围:

使用@Scope定义bean的作用范围

bean的生命周期:

@postConstruct@PreDestroy定义bean的生命周期。

使用注解方式的依赖注入:

使用@Autowired注解开启自动装配模式(按类型)

注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法

注意:自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法

使用@Qualifier注解开启指定名称装配bean

使用@Value实现简单类型注入

使用@PropertySource注解加载properties文件

注意:路径仅支持单一文件配置,多文件请使用数组格式配置,不允许使用通配符*

第三方bean管理:

使用@Bean配置第三方bean

使用独立的配置类管理第三方bean

然后将独立的配置类加入到核心配置(推荐使用导入式)

使用@Import注解手动加入配置类到核心配置,此注解只能添加一次,多个数据请用数组格式

第三方简单类型依赖注入:

第三方引用类型依赖注入;

引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象

XML配置对比注解配置

Spring整合Mybatis:

前言:

Spring 就像餐厅的 智能管理系统

  • 知道有多少服务员(Bean)
  • 管理所有设备(各种 Factory)
  • 处理顾客排队(线程池)
  • 协调各部门工作(AOP 事务)

MyBatis 就像 标准化后厨

  • 每道菜有标准菜谱(SQL 映射)
  • 食材统一供应(DataSource)
  • 出品稳定(结果集映射)

MyBatis-Spring 就是连接两者的 智能传菜系统

  • 自动呼叫厨师(Mapper 代理)
  • 智能调度电梯(SqlSession 管理)
  • 保证上菜顺序(事务控制)
  • 异常处理机制(错误回滚)

这样整合后,餐厅(应用)运营效率大大提高,顾客(开发者)只需要愉快地点餐(调用 Service),不用操心后厨的复杂流程,下面我们通过这个形象的比喻来介绍整合的流程。

1. 没有整合前的状态

想象两个独立的部门:

  • MyBatis:后厨团队(负责做菜)
  • Spring:前厅管理系统(负责接待、收银、调度,效率低下。
2. Spring 整合 MyBatis 的过程
第一步:建立连接通道
代码语言:javascript
复制
// 相当于在前后厨之间安装了传菜电梯
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) {
    // 这个工厂就是那个电梯控制系统
    SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
    factory.setDataSource(dataSource); // 连接食材仓库
    return factory.getObject();
第二步:菜单标准化

xml

代码语言:javascript
复制
<!-- 后厨的菜谱 -->
<!-- mapper/UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <!-- 每道菜的标准做法 -->
    <select id="selectUser" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>
第三步:自动接单系统

java

代码语言:javascript
复制
// 自动接单机器人
@MapperScan("com.example.mapper")
// 这个注解相当于:
// "扫描所有厨师(Mapper),给他们每人配一个对讲机"
// 客人点"鱼香肉丝",系统自动呼叫擅长这道菜的厨师
3. 完整的点餐流程
顾客点餐(Service 层)

java

代码语言:javascript
复制
@Service
public class UserService {
    // 顾客说:"我要一份用户查询套餐"
    
    @Autowired  // 服务员自动过来接单
    private UserMapper userMapper;  // 对讲机
    
    public User getUser(int id) {
        // 服务员按下对讲机:"3号桌,用户查询,id=1"
        return userMapper.selectUser(id);
        // 后厨收到指令开始做菜...
    }
}
后厨做菜(MyBatis 执行)

text

代码语言:javascript
复制
1. 对讲机收到订单 → Mapper 接口方法被调用
2. 查菜谱找做法 → 查找对应的 SQL 映射
3. 从冰箱取食材 → DataSource 获取数据库连接
4. 按标准流程做菜 → 执行 SQL
5. 装盘上菜 → 将 ResultSet 映射成 Java 对象
6. 传菜电梯送出 → 返回结果
4. 关键角色解释
SqlSessionFactoryBean

传菜电梯的总控室

  • 负责管理所有电梯(数据库连接)
  • 知道每个电梯通往哪个仓库(DataSource)
  • 维护所有菜谱(Mapper XML)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义bean
  • 衍生注解
  • 纯注解开发模式:
  • bean的作用范围:
  • bean的生命周期:
  • 使用注解方式的依赖注入:
  • 第三方bean管理:
  • 第三方简单类型依赖注入:
  • 第三方引用类型依赖注入;
  • XML配置对比注解配置
    • 1. 没有整合前的状态
    • 2. Spring 整合 MyBatis 的过程
      • 第一步:建立连接通道
      • 第二步:菜单标准化
      • 第三步:自动接单系统
    • 3. 完整的点餐流程
      • 顾客点餐(Service 层)
      • 后厨做菜(MyBatis 执行)
    • 4. 关键角色解释
      • SqlSessionFactoryBean
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档