SpringBoot2.4 开发流程+常规配置


一、一些准备工作

1-1 配置Maven

1. 下载安装

纯绿色软件,直接解压(配置)就可以使用

下载

配置

  • 依赖Java,需要配置 JAVA_HOME
  • 设置自身运行环境,需要配置 MAVEN_HOME
    • MAVEN_HOME
    • D:\Program Files\apache-maven-3.8.4
  • PATH 添加
    • %MAVEN_HOME%\bin

2、修改配置文件

  • 配置文件位置
    • D:\Program Files\apache-maven-3.8.4\conf\settings.xml

A、本地仓库配置

<localRepository>D:\maven\repository</localRepository>

B、远程仓库配置

  • 配置阿里云镜像仓库
    <mirror>
    	<!-- 镜像唯一标识符,用以区分不同的 mirror元素	 -->
    	<id>nexus-aliyun</id>
    	<!-- 对那种仓库进行镜像/ 替代那个仓库 -->
    	<mirrorOf>central</mirrorOf>
    	<!-- 镜像名称 -->
    	<name>Nexus aliyun</name>
    	<!-- 镜像URL -->
    	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    C、将配置文件拷贝到本地仓库同级目录

3、配置 IDEA 中的 MAVEN

1-2 下载相关插件

Lombok

MyBatisX

二、创建新工程

2-1 配置开发环境等

  • Spring Initializr
  • 服务器URI配置为阿里云:https://start.aliyun.com
  • 工程位置选择好
  • 选择 JavaMaven
  • 按照实际开发设置一下组名工件软件包名
  • 选择 SDKJava版本
  • 打包为 Jar

2-2 配置SpringBoot版本+初始依赖

  • 直接 2.4.1 版本
  • 选择常用的依赖:
    • lombok # 简化Java Bean开发
    • Spring Boot DevTools # 开发插件,可以设置热重载
      • 【热重载】项目或者页面修改以后:Ctrl+F9
    • Spring Configuration Processor
    • Spring Web
    • MyBatis Plus Framework # 持久层框架
    • MySQL Driver # 数据库链接驱动
    • Spring Boot Actuator #指标监控

三、一些基础配置

3-1 引入阿里巴巴Druid、配置

pom.xml 中引入:

<!-- 阿里巴巴德鲁伊 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.17</version>
</dependency>

application.yml 中简单配置一下:

  • 花括号中的内容,根据实际情况配置
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/{数据库名}?useSSL=false&characterEncoding=utf8
        username: root
        password: {密码}
        driver-class-name: com.mysql.jdbc.Driver
    
        druid:
          aop-patterns: com.xueou.boot.*  # spring bean 监控
          filters: stat,wall,slf4j
          max-active: 12
          stat-view-servlet:
            enabled: true
            # 登陆账号密码
            login-username: xueoup
            login-password: {密码}
            reset-enable: false
    
          web-stat-filter: # web监控
            enabled: true
            url-pattern: /*
            exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
    
          filter:
            stat: #sql监控
              # 慢查询时间阈值
              slow-sql-millis: 1000
              logSlowSql: true
              enabled: true
            wall: #防火墙
              enabled: true
              config:
                drop-table-allow: false

3-2 配置使用MyBatis-Plus开发Controller

  • com.xueoup.boot 下新建下列包:
    • bean
    • mapper
    • service
    • service.impl

配置包扫描:

  • com.xueoup.boot/MyApplication.java
    @MapperScan("com.xueou.boot.mapper")
    @ServletComponentScan(basePackages = {"com.xueou.boot"})
    @SpringBootApplication
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(CompApplication.class, args);
        }
    }

新建JavaBean

  • bean/Stu.java
    @Data
    @ToString
    @AllArgsConstructor
    @NoArgsConstructor
    @TableName("stus")
    public class Stu {
        @TableId(type = IdType.AUTO)
        private int id;
        private String name;
        private String gender;
        private String stuId;
        @TableField("class_name")
        private String cls;
        private String phone;
        private String teacher;
        private String major;
        // 宿舍
        private String dorm="";
    }

新建Mapper

  • mapper/StuMapper.java
    public interface StuMapper extends BaseMapper<Stu> {
    }

新建Service

  • service/StuService.java
    public interface StuService extends IService<Stu> {
        List<Stu> getByClass(String className);
        List<Stu> queryByKeyword(String keyword);
    }

新建ServiceImpl

  • service/impl/StuServiceImpl.java
    一定不要忘了 @Service 注解
    @Service
    public class StuServiceImpl
            extends ServiceImpl<StuMapper, Stu>
            implements StuService {
        @Override
        public List<Stu> getByClass(String className) {
            if("all".equals(className)){
                return list();
            }
            QueryWrapper<Stu> wrapper = new QueryWrapper<>();
            wrapper.eq("class_name", className);
            wrapper.orderByAsc("name");
            return list(wrapper);
        }
    
        @Override
        public List<Stu> queryByKeyword(String keyword) {
            QueryWrapper<Stu> wrapper = new QueryWrapper<>();
            String[] keys = keyword.split("\\s+");
            for (String key:
                    keys) {
                wrapper.or().like("name", key).or().like("stu_id", key);
                wrapper.or().like("teacher", key);
            }
            wrapper.orderByDesc("name");
            return list(wrapper);
        }
    }

持久层的使用

1、Test类中:AutoWired 注解

@SpringBootTest
class StuApplicationTests {
    @Autowired
    StuService stuService;

    @DisplayName("这是一个简单的测试:")
    @Test
    void contextLoads() {
        List<Stu> lst = stuService.list();
        System.out.println(lst);
    }
}

2、Controller 中:Resource 注解

@RestController
public class StuController {
    @Resource
    StuService stuService;

    @GetMapping("/stus/{class}")
    public Map<String, Object> getByClassName(@PathVariable("class") String className){
        Map<String, Object> map = new HashMap<>();
        String[] c = {"xxxxxx","就不告诉你~"};
        List<Object> classes = Arrays.asList(c);
        if(className.isEmpty()){
            map.put("states", 500);
            map.put("msg", "班级为空");
        }
        else if(classes.contains(className)){
            map.put("states", 200);
            map.put("msg", "获取成功");
            List<Stu> stus = stuService.getByClass(className);
            map.put("data", stus);
        }else{
            map.put("states", 500);
            map.put("msg", "班级名称错误");
        }
        return map;
    }

    @GetMapping("/stus-all")
    public List<Stu> getAll(){
        return stuService.list();
    }
}

文章作者: pxoxq
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 pxoxq !
  目录