尝鲜:Gradle构建SpringBoot(2.3.1最新版)

  • Post author:
  • Post category:其他

风吹来的消息

今天看了一篇博客Spring Boot 把 Maven 干掉了!就一直想自己构建下。

生成项目

进入这个网站生成SpringBoot的Demo项目。
如下:
在这里插入图片描述
导出项目之后解压放到某个目录下然后倒入IDEA。
这几个就包含了很多很多的核心依赖基本导入之后,我们不需要太关心Spring相关的东西,如果要用第三方直接依赖,具体见下文的build.gradle。

导入项目

在这里插入图片描述
选择open,然后选择你的解压好的项目,一般解压好就叫demo,冲突的话自己改名。

在这里插入图片描述
然后选择一个JDK环境就OK了直接下一步。
在这里插入图片描述
图中右下角的问题是因为我的gradle版本太高了我的idea版本太低导致的,
但是设置的版本太低或者不是指定版本的就会报错如下图:
在这里插入图片描述
所以为了避免上边的问题我们设置5.6.1,设置完之后,会出现下图中显示的右下角的弹窗,选择Enable Auto-Import。
在这里插入图片描述
然后我们选择Build -> Build Project
在这里插入图片描述
我们需要打开 module settings里边选择我们已经安装的JDK。
在这里插入图片描述

先选中项目根目录,Command + 下键或者我的Fn + F4都可以打开。

在这里插入图片描述

然后再次选择Build -> Build Project

项目配置

大部分项目配置我们再生成的时候已经选择好了。
build.gradle内容

plugins {
	id 'org.springframework.boot' version '2.3.1.RELEASE'
	id 'io.spring.dependency-management' version '1.0.9.RELEASE'
	id 'java'
}

group = 'com.lyd'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3'
	implementation 'com.alibaba:druid-spring-boot-starter:1.1.10'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	runtimeOnly 'mysql:mysql-connector-java'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}

test {
	useJUnitPlatform()
}

application.properties文件中的内容

#datasource
spring.datasource.url=jdbc:mysql://localhost:3306/credit?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


#set tomcat port context
#端口被占用的话就换一个
server.port=8082
server.servlet.context-path=/demo

在新版当中server.context-path已经失效了设置了统一的访问路径之后不生效,要修改成server.servlet.context-path

application.yml文件中的内容

#spring的配置
spring:
  datasource:
    name: sqldata
    url: jdbc:mysql://localhost:3306/credit?characterEncoding=UTF-8 #配置在 配置中心
    username: root #配置在 配置中心
    password: 123456 #配置在 配置中心
    # 使用druid数据连接池
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 'x' FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20
  aop:
    proxy-target-class: true



#把内置的tomcat 参数 配置在 properties文件中,以便日后使用配置中心
# #tomcat容器的配置
#server:
#    context-path: /lyd
#    port: 8082

#mybatis的配置
mybatis:
  type-aliases-package: com.lyd.demo.mapper
  mapper-locations: classpath*:mappings/**/*.xml

简单的测试代码

SpringBoot的引导配置
我们可以参考step2中的代码:


              package com.example.demo;
              import org.springframework.boot.SpringApplication;
              import org.springframework.boot.autoconfigure.SpringBootApplication;
              import org.springframework.web.bind.annotation.GetMapping;
              import org.springframework.web.bind.annotation.RequestParam;
              import org.springframework.web.bind.annotation.RestController;
              
              @SpringBootApplication
              @RestController
              public class DemoApplication {
                
                  
                  public static void main(String[] args) {
                  SpringApplication.run(DemoApplication.class, args);
                  }
                  
                  @GetMapping("/hello")
                  public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
                  return String.format("Hello %s!", name);
                  }
                
              }
           

启动服务

我们是gradle项目,我们使用

./gradlew rootRun

等进度到75%会卡住没关系,当我们看到下图没有报错没有端口占用,就是成功了:
在这里插入图片描述

接下来我们访问http://localhost:8082/demo/hello?name=xxxxxx
在这里插入图片描述
成功!

停止服务

看了很多停止服务的比较简单的就是,查看服务进程ID直接执行:

kill -9 [pid] 如:kill -9 800

那我们如何查看pid呢?
第一种:

ps -ef | grep [Application名称,只要能查到就行]
如:ps -ef | grep DemoApplication

然后可以看到下图的第二个数字就是进程Id;然后执行kill -9 1268
在这里插入图片描述
第二种:
我们在执行./gradlew bootRun的时候会看到下图所示:
在这里插入图片描述
有个进程ID是不是和我们第一种方式查到的一致。

好了我们执行kill -9 1268

还有一点就是我们杀死之后重新执行./gradlew bootRun启动服务的时候要多等会可能启动没那么快,导致我们一直请求404。


版权声明:本文为u011148116原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。