欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot 学习笔记1(gradle创建web工程)

程序员文章站 2022-03-14 08:51:48
...

前言

     springboot 倾向于约定优于配置,它不需要你配置繁琐的xml文件,极大简化你的开发,它的设计目的是让您尽可能快地创建项目和运行项目。gradle和maven一样都是构建工具。gradle优点就是无需写繁琐的xml,脚本结构比较清晰,易读,就像springboot一样,简化开发。spring源码就是使用的gradle。


使用IDEA 创建web项目 


   1. 创建一个工程。new project ,选择Spring Initializr 。选择你要使用的依赖框架。然后继续next,创建

springboot 学习笔记1(gradle创建web工程)

一个项目。项目结构如下:

springboot 学习笔记1(gradle创建web工程)

2.build.gradle中加入以下依赖,然后build:

buildscript {
	ext {
		springBootVersion = '1.5.3.RELEASE'
	}
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
	mavenCentral()
}
version = '1.0.0'
sourceCompatibility = 1.8

tasks.withType(JavaCompile){
   options.encoding="utf-8"
}
repositories {
	maven{
		url 'http://192.168.0.210:8081/nexus/content/repositories/thirdparty/'
	}
	maven{
		url 'http://192.168.0.210:8081/nexus/content/repositories/central/'
	}
}

ext{
	dubboVersion="2.5.4"
	commonLangVersion="3.2"
	nettyVersion="3.2.5.Final"
	ehcacheVersion="2.10.4"
}
dependencies {
        //starter启动器是一组你可以添加到程序中的依赖描述符,给我们提供能满足我们需要的一站式的服务。starters包含许多你需要快速创建和运行项目的依赖。
//。例如如果使用redis,只需要加入spring-boot-starter-data-redis即可以使用redis,无需其他多余依赖配置。
        
	compile('org.springframework.boot:spring-boot-starter-aop')
	//使用缓存
        compile('org.springframework.boot:spring-boot-starter-cache')
	//使用redis
        compile('org.springframework.boot:spring-boot-starter-data-redis')
	//使用thymelaf模板引擎
        compile ("org.springframework.boot:spring-boot-starter-thymeleaf")
	//使用持久化api操作数据库
        compile("org.springframework.boot:spring-boot-starter-data-jpa")
	//使用restful微服务
        compile("org.springframework.boot:spring-boot-starter-data-rest")
	//使用actuator执行器,监控应用程序
        compile("org.springframework.boot:spring-boot-starter-actuator")
        //热部署,修改文件,无需手动重启项目 
	compile ("org.springframework.boot:spring-boot-devtools")
	//安全管理,提供用户单点登录,授权等服务
        compile("org.springframework.boot:spring-boot-starter-security")
	//kafka分布式消息队列
        compile('org.springframework.kafka:spring-kafka')
	//web 应用程序
        compile('org.springframework.boot:spring-boot-starter-web')
	runtime('mysql:mysql-connector-java')
	testCompile('org.springframework.boot:spring-boot-starter-test')
	// Commons Lang3
	compile ('org.apache.commons:commons-lang3:3.2')
        compile("com.alibaba:dubbo:${dubboVersion}")
	compile('mysql:mysql-connector-java:5.1.27')
	compile ("org.apache.commons:commons-lang3:${commonLangVersion}")
	compile "net.sf.ehcache:ehcache:${ehcacheVersion}"
  //引用WEB-INF下jar包
    compile fileTree(dir:'src/main/webapp/WEB-INF/lib',include:['*.jar'])
	
}

sourceSets {
	main {
		resources {
			srcDir 'src/main/resources'
		}
		output.resourcesDir = "build/classes/main"
	}
}

task copyProjectJar(type: Sync){
	from configurations.runtime,configurations.compile
	into 'build/libs/lib'
}

task generateJar(type: Jar, dependsOn: [copyProjectJar,jar]) {
	manifest {
		attributes ('Implementation-Title': 'Gradle Quickstart',
				'Implementation-Version': version,
				'Created-By': 'who',
				'Main-Class': 'com.wtsd.TcsApplication',
				'Class-Path': configurations.compile.collect {'lib/' + it.getName()}.join(' ')
		)
	}
	into('') {
		from "$buildDir/classes/main"
		include('com/')
	}
	into('') {
		from "$projectDir/src/main/resources"
		include ('ehcache.xml','dubbo.xml','*.txt')
	}
}

//单元测试
task myTest(type: Test) {
	exclude()
	filter {
		//测试指定包
		includeTestsMatching "com.test.service.*"
		//指定测试类
		includeTestsMatching "*ServiceTest"
	}

}

//发布到maven远程仓库
apply plugin: 'maven'
uploadArchives {
    repositories.mavenDeployer {
        repository(url: "http://localhost:8081/repository/project/") {
            authentication(userName: "admin", password: "admin123")
        }

    }
}


//生成doc文档
task generateJavadoc(type: Javadoc) {
	source = sourceSets.main.allJava
	//指定编码,否则会报错
	options {
		encoding "utf-8"
		charSet 'utf-8'
		author true
		version true
	}
}
//gralde 打包成jar不支持把依赖打包进去,他会默认你已经添加好了依赖。war会将依赖添加进去会的。
//不把依赖打包进去是考虑到大部分用户情况。如果需要包含依赖jar,只能gralde build。上传到资源库只能上传war
//除非使用三方工具

//将doc文档生成jar文件
task generateDocJar(type: Jar) {
//设置依赖关系,打包doc文档为jar之前,必须先生成doc文档
	dependsOn generateJavadoc
	def jar = file("$buildDir/jar")
	jar.mkdirs()

	//定义生成jar的文件名
	baseName = project.name
	from("$buildDir/docs/javadoc") {
		into "jar"
	}

}

3。build完成之后,所有依赖jar都已经添加进来,然后就是对application.properties添加配置。这里我建议用YAML脚本语言。YAML代码简洁,结构和json一样,层次感比较清晰,阅读方便。只需将application.properties后缀改成yml即可。application.yml:

spring:
  
    #connection to database
    datasource:
       driverClassName: com.mysql.jdbc.Driver
       url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&autoReconnect=true
       username: test
       password: test
    #json对日期进行格式化。对rest接口,日期会自动格式化成时间字符串
    jackson:
       date-format: YYYY:MM:ss HH:mm:ss
       #设置时区,
       time-zone:GMT+8
    #热部署
    devtools:
       restart:
          additional-paths: src/main/java
    #修改java文件之后,是否自动重启,开发阶段,设置为true,
          enabled: true
    # 使用livereload.
       livereload:
          enabled: true
    jpa:
      show-sql: true 
      properties:
       hibernate:
         dialect:rg.hibernate.dialect.MySQL5Dialect
       cache:
         #使用二级缓存
         use_second_level_cache: true
         #查询使用缓存
         use_query_cache:true
         #缓存provider  ehcache
         region.factory_class:org.hibernate.cache.ehcache.EhCacheRegionFactory
   #加载ehcache缓存配置所在路径     
   cache:
     ehcache:
       config: classpath*:ehcache.xml          
#thymeleaf配置
    thymeleaf:
    #开发阶段不开启缓存
       cache: false
# Content-Type类型.
       content-type: text/html
# mvc模板解析.
       enabled: true
#模板编码类型.
       encoding: UTF-8

    #redis配置
    redis:
       host: localhost
       port: 6379
       timeout: 3000
       pool:
          max-active: 8
          max-idle: 8
          max-wait: -1
    kafka:
       bootstrap-servers: localhost:9092,localhost:9093
       linger.ms: 1
       client-id: 1
       template:
          default-topic: bootkafka
       producer:
          bootstrap-servers: localhost:9092,localhost:9093
          key-serializer: org.apache.kafka.common.serialization.StringSerializer
          value-serializer: org.apache.kafka.common.serialization.StringSerializer
          retries: 1
          batch-size: 16384
          acks: 1
       consumer:
          group-id: testgroup
          bootstrap-servers: localhost:9092,localhost:9093
server:
  #项目端口号
    port: 81
   #访问路径
    context-path: /test
    #session超时时间 秒
    session:
       timeout: 300
#开启监控
endpoints:
    actuator:
       enabled: true
    beans:
       enabled: true
management:
    security:
       enabled: true
       roles: USER

4.创建一个Controller 。启动并在浏览器访问:

@RestController
 public class HomeController extends BaseController {

	@GetMapping("/test")
         public String test() {
	
          return "hello springboot";
	
     }
}

springboot 学习笔记1(gradle创建web工程)