2026/8/23 maven springboot

0.Maven配置

Maven的作用,依赖管理。

Maven的配置文件,setting.xml。

我们的java项目,可以使用maven下载我们需要的jar包。我们maven下载jar包,默认是从国外的下载,会有点慢,我们可以用setting设置把他换成国内的镜像,一般是阿里云镜像。

1.idea配置maven

maven home path是你要用的maven,一般idea默认有一个,也可以选择自己电脑上的maven。

user setting file是你的maven的setting文件,用哪个setting.xml就选哪个。

local repository是你用maven下载好的jar都放在哪个位置。

2.idea创建springboot项目

3.引入web依赖


@SpringBootApplication三个注解

springboot项目中@SpringBootApplication包含的三个注解

复制代码
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

建个数据库

可以通过加索引优化数据库

写一个controller(先写配置,再建controller包,写接口类)

等会,得先加web依赖,然后加上之后,maven刷新一下,他自动带上Tomcat服务器、springMVC(如图👇),接下来就做下面的步骤。

1.写配置 application.yml

复制代码
server:
  port: 8081

2.建controller包,写接口类

controller包要放在子包下,否则404找不到类

java 复制代码
package org.school.xdttest.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@RequestMapping("/user")
public class UserController {
    @GetMapping("/hello")
    public String hello(){
        return "123";
    }
}

这次变成controller调用service

controller

java 复制代码
package org.school.xdttest.controller;

import org.school.xdttest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@RequestMapping("/user")
public class UserController {
    //注入service
    @Autowired
    private UserService userService;

    @GetMapping("/hello")
    public String hello(){
        return userService.sayhello();
    }
}

接口+实现类

java 复制代码
package org.school.xdttest.service;

public interface UserService {
    String sayhello();
}
java 复制代码
package org.school.xdttest.service.impl;

import org.school.xdttest.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    @Override
    public String sayhello() {
        return "service返回";
    }
}

写一个统一返回结果的Result.java

一般标准的项目里肯定要统一咱们这个返回结果的,code msg data

一般写common包里,这里一般放工具、异常、 统一返回

写Result实体类,我们可以加上Lombok依赖里的@Data注解,这个注解就是专门放在实体类上面,自动帮我们生成代码比如getter setter toString equals hashcode

然后引入lombok依赖的时候,如果继承了父工程,可以省略版本号和scope

java 复制代码
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

Result要用泛型,因为返回的数据类型不确定。如果不加泛型的话,就要把data属性定义成Object。

Result加泛型<T>就是为了让data可以存放不同类型的数据,使用泛型可以在编译时做类型校验,避免Object带来的强制类型转换,减少运行时类型转换异常。

T和?的区别(泛型T与通配符?)

<T>定义泛型参数,写在类/方法上面,用来声明一个类型变量。T表示一个确定的类型,使用的时候确定是什么

一旦确定是User,整个类里面所有T全部都是User
?通配符,代表任意未知类型。一般用在方法参数,返回值,不能写在类定义上。
T定义模板,?表示不知道是什么类型

java 复制代码
package org.school.xdttest.common;

import lombok.Data;

@Data
public class Result<T> {
    private Integer code;
    private String msg;
    private T data;

    //成功
    public static <T> Result<T> success(T data){
        Result<T> r=new Result<>();
        r.setCode(200);
        r.setMsg("操作成功");
        r.setData(data);
        return r;
    }
    
    //失败
    public static <T> Result<T> fail(Integer code,String msg){
        Result<T> r=new Result<>();
        r.setCode(code);
        r.setMsg(msg);
        return r;
    }
}

写一个全局异常处理器GlobalExceptionHandler

这个一般在项目里也得有

复制代码
package org.school.xdttest.common;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice //全局异常注解
public class GlobalExceptionHandler {
    //捕获所有异常
    @ExceptionHandler(Exception.class)
    public Result<?> handleException(Exception e){
        e.printStackTrace();
        return Result.fail(500,"服务器内部异常:"+e.getMessage());
    }
}

@RestControllerAdvice:对所有Controller做增强,统一捕获异常,返回JSON

@ExceptionHandler(Exception.class)用来拦截对应类型的异常

demo

0.

在原来基础上加上依赖mybatis,sql。

复制代码
        <!-- mybatis -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!--  mysql依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
相关推荐
Hvitur4 分钟前
Java - Lambda
java·开发语言·python
杨凯凡1 小时前
Spring Boot 大文件下载如何实现断点续传?HTTP Range、206 与 416 实战
spring boot·后端·http
apcipot_rain5 小时前
C++转Java日记(06)
java·开发语言
金銀銅鐵10 小时前
带您看懂字节码指令(一):一帧里有什么
java·后端·ai编程
nice_lcj52012 小时前
【从零理解 Spring AI · 14】RAG 的四个环节:加载、切分、向量化、检索
java·spring boot·embedding·向量数据库·rag·spring ai·ai应用开发
学长毕设13 小时前
基于springboot科创竞赛信息平台-附源码
java·spring boot·后端
聪明的笨猪猪14 小时前
Java 工程案例:AI 生成 @Async 异步线程池踩坑
java·经验分享·面试·ai编程
学长毕设14 小时前
基于SpringBoot公务员考试交流平台-附源码
java·spring boot·后端
SL_staff16 小时前
私有化低代码:面向强监管行业的可控数字化实践
java·低代码