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>
相关推荐
金銀銅鐵2 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工3 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
catoop3 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x3 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事4 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客4 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn1884 小时前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn5 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
y1su5 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划
我命由我123456 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法