一、Spring

        1.介绍:

        (1)Spring是核心框架,它是轻量级的。它对表现层框架SpringMVC和持久层框架Mybatis有着很好的支持

        (2)Spring的AOP对事物提供很好的支持

        2..核心:

        (1)IOC(控制反转):

                将对象的创建、依赖管理交给 Spring 容器,避免手动 new 对象和处理依赖,降低耦合

        (2)AOP切面编程:

                在不修改业务代码的前提下,对方法进行增强(如事务控制、日志记录)

                AOP思想:在某个方法前后做一些操作(如开始事务、提交事务、回滚)

        3.Spring是由哪几个模块组成的?


        (1)Core Container 核心模块(IOC容器:控制反转,之前需要自己new对象的过程现在交给IOC容器来处理) ;
        (2)AOP[面向切面编程]模块,
                        AOP底层是基于动态代理设计模式来实现的[在某个方法前后做一些操作],主要用于事务处理的问题;
       (3)Web模块(SpringMVC表现层的框架),
                        SpringMVC的底层对Servlet进行了封装--DispatcherServlet(核心的前端控制器),用于处理客户端请求,    
         (4)Data Access模块:Spring提供了对0RM框架(对象关系映射,如Mybatis)的支持

        4.常用核心注解:

        (1)@Component :标记普通组件类,由 Spring 容器管理;衍生注解  @Controller (表现层)、 @Service (业务层)、 @Repository (持久层),用于明确分层。

        (2)@Autowired :自动注入 Spring 容器中的 Bean(按类型匹配); @Resource  类似,可按名称匹配。

        (3)@Configuration :标记配置类,替代 XML 配置文件; @Bean  用于在配置类中定义 Bean。

        (4)@Transactional :声明式事务注解,标记在业务方法上,实现事务的提交、回滚。

 

二、SpringMVC

        1.介绍:

                是 Spring 家族的表现层框架,基于 MVC 设计模式,负责:
                        (1)接收前端请求(如浏览器的 HTTP 请求);
                        (2)调用业务层处理逻辑;
                        (3)渲染响应(如跳转 JSP 页面、返回 JSON 数据)。
                        (4)它让表现层的请求映射、参数绑定、结果处理更加高效。

        2.常用核心注解:

        (1)@Controller :标记类为 SpringMVC 控制器,处理前端请求。

        (2)@RequestMapping :映射请求 URL 到方法;衍生注解  @GetMapping (处理 GET 请求)、 @PostMapping (处理 POST 请求)等,更精准控制请求类型。

        (3) @RequestParam :绑定请求参数到方法参数; @PathVariable  绑定 URL 路径中的变量(如  /user/{id}  中的  id )。

        (4)@ResponseBody :标记方法返回值直接作为响应体(如 JSON 数据); 

        (5)@RestController  是  @Controller + @ResponseBody  的组合,常用于前后端分离场景。

        (6)@PathVariable 注解:

                        作用:将 URL 路径中的占位符(如  /users/{id}  中的  {id} )绑定到方法的参数上,实现动态路径的参数获取。
 
                        使用场景:

                        a.RESTful 风格的资源查询、更新、删除等操作,例如根据用户 ID 查询用户信息。

                        b.若方法参数名与 URL 占位符名称不一致,可通过 @PathVariable("占位符名称")  显式指定

                        示例:

        a.

@RestController
@RequestMapping("/users")
public class UserController {
    // 路径中的{id}会被@PathVariable绑定到方法参数id上
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Integer id) {
        // 根据id查询用户并返回
    }
}

        b.

@GetMapping("/{userId}")
public User getUserById(@PathVariable("userId") Integer id) {
    
}

        3.代码示例:

@RestController
@RequestMapping("/depts")
public class DeptController {

    @Autowired
    private DeptService deptService;
    //删除部门
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id)  {
        deptService.delete(id);
        return Result.success();
    }

    //添加部门
    @PostMapping
    public Result save(@RequestBody Dept dept){
        deptService.save(dept);
        return Result.success();
    }

    //根据ID查询
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        Dept dept =  deptService.getById(id);
        return Result.success(dept);
    }
}

三、Mybatis

        1.介绍:

        (1)是持久层 ORM 框架,负责数据库 CRUD 操作

        (2)MyBatis  通过 XML 或注解编写 SQL,灵活控制 SQL 逻辑;

        2.常用核心注解:

        (1)@Mapper :标记接口为 MyBatis 的 Mapper 接口,让框架自动生成实现类。
 
        (2)@Select / @Insert / @Update / @Delete :在 Mapper 接口中通过注解编写 SQL,替代 XML 配置

        3.代码示例:

 <!--    .xml文件-->
 <!--    动态更新员工-->
    <update id="update2">
        update emp
        <set>
            <if test="username!=null">username=#{username},</if>
            <if test="name!=null">name=#{name},</if>
            <if test="gender!=null">gender=#{gender},</if>
            <if test="image!=null">image=#{image},</if>
            <if test="job!=null">job=#{job},</if>
            <if test="entrydate!=null">entrydate=#{entrydate},</if>
            <if test="deptId!=null">dept_id=#{deptId},</if>
            <if test="updateTime">update_time = #{updateTime}</if>
        </set>
        where id = #{id}
    </update>
//mapper接口
 //更新员工
    @Update("update emp set username=#{username},name=#{name},gender=#{gender},image=#{image},job=#{job},entrydate=#{entrydate},dept_id=#{deptId},"+"update_time=#{updateTime} where id=#{id}")
    public void update(Emp emp);

四、Mybatis-Plus

        1.介绍:

                 MyBatis-Plus  是 MyBatis 的增强工具,提供了通用 Mapper、代码生成器、分页插件等功能,大幅减少重复 CRUD 代码的编写

        2.常用核心注解--增强注解:

        (1)@TableName :指定实体类对应的数据表名(当类名与表名不一致时)。

        (2) @TableId :指定实体类的主键字段,可配置主键策略(如  type = IdType.AUTO  自增)。

        (3)@TableField :指定实体类字段与表字段的映射关系(如字段名不一致、排除非表字段)

        3.代码示例:

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("address")
@ApiModel(value="Address对象", description="")
public class Address implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "用户ID")
    private Long userId;
}

五、SpringBoot

        1.介绍:

        (1)是框架整合工具,核心是“自动配置”

        (2)内置了大量 starter 依赖(如  spring-boot-starter-web  整合 SpringMVC),无需手动配置依赖版本;

        (3) 自动配置框架的核心组件(如 Spring 容器、MyBatis 数据源),大幅减少 XML/Java 配置代码;

        (4)内嵌 Web 服务器(如 Tomcat),可直接打包成 Jar 包运行,简化部署流程

         2.常用核心注解:

                @SpringBootApplication :

                        标记主启动类,是 @Configuration + @EnableAutoConfiguration + @ComponentScan  的组合,开启自动配置和组件扫描

        3.代码示例:

        

@SpringBootApplication
public class SpringbootAopApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootAopApplication.class, args);
    }

}

六、补充-RESTful风格:

        1.介绍:

                在 Spring 生态(如 SpringMVC、SpringBoot) 中被广泛使用,是设计 API 接口的主流风格

        2.RESTful 风格的核心场景与框架

        (1)RESTful 是一种软件架构风格,用于设计网络 API,SpringMVC、SpringBoot 是支持它的典型框架

        (2)在 SpringMVC 中,通过  @RequestMapping 、 @GetMapping 、 @PostMapping  等注解定义 RESTful 接口;

        (3)SpringBoot 则进一步简化了 RESTful 接口的开发,结合自动配置和 Starter 依赖,可快速构建符合 REST 规范的服务

        3.RESTful 风格的核心设计原则(结合 Spring 框架)

        (1) 在 Spring 中,通过 @PathVariable  绑定 URI 中的路径变量

@GetMapping("/users/{id}")
public User getUser(@PathVariable Integer id) {
    // 处理逻辑
}

        (2)HTTP 方法语义化:

                  GET :查询资源(如  @GetMapping );        

                  POST :创建资源(如  @PostMapping );

                  PUT :全量更新资源(如  @PutMapping );
 
                 DELETE :删除资源(如  @DeleteMapping ) 

        (3)状态码与响应格式:

                利用 HTTP 状态码表示操作结果(如  200 OK  表示成功, 404 Not Found  表示资源不存在);

                响应通常以 JSON 格式返回,Spring 中可通过  @ResponseBody  或  @RestController  实现               

七、统一结果封装的 Result 风格

        

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应码 描述字符串
    private Object data; //返回的数据

    //增删改 成功响应
    public static Result success(){
        return new Result(1,"success",null);
    }
    //查询 成功响应
    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    //失败响应
    public static Result error(String msg){
        return new Result(0,msg,null);
    }
}

八、

        1.SSM:Spring+SpringMVC+MyBatis

        2.Spring + SpringMVC + Hibernate 

        (Hibernate 是另一款 ORM 框架,与 MyBatis 功能重叠但设计思路不同)

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐