风吹来的消息
今天看了一篇博客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。