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>
相关推荐
步行cgn5 分钟前
Spring 全注解开发详解
java·后端·spring
长河21 分钟前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
code2cat38 分钟前
Java进阶篇之LongAdder:把统计更新分散,再读取总和
java·并发编程·原子类·longadder
凯哥Java1 小时前
写代码怎么避免逻辑漏洞?
java·开发语言·人工智能·自动化
Ivanqhz1 小时前
正余弦位置编码(Sinusoidal Positional Encoding)
java·linux·数据库
BD_Marathon1 小时前
消息对象中字段的说明
java·前端·python
zlpzlpzyd2 小时前
nacos的openapi地址
java
落魄实习生2 小时前
Agent Scope Java 2.x 系列【10】Middleware
java·开发语言·ai
ZealSinger3 小时前
Spring7 RestTemplate弃用迁移
java·spring·后端开发·restclient
朝朝辞暮i4 小时前
C++ 第 13 课:值传递 —— 为什么函数里改了,外面却没变?
java·c++·算法