Picture Picture Picture Picture Picture Picture Picture

Spring官网教程学习1和使用Gradle

spring官网
1、工程构建
我选择的方式是IDEA+gradle

构建工程

IDEA构建Gradle工程

Gradle进行Spring配置

知识和概念

gradle命令

gradle:开始构建
gradle tasks :查看有哪些任务
gradle build :编译代码 生产jar包
gradle wrapper --gradle-version 2.13 无环境构建

build.gradle

plugins {
id 'java'--java环境 会多了javadoc-=(including tasks for building the project, creating JavaDoc, and running tests)
}
repositories {
mavenCentral() ---配置仓库--(build should resolve its dependencies from the Maven Central repository)
}

sourceCompatibility = 1.8 --java版本
targetCompatibility = 1.8
dependencies {
compile "joda-time:joda-time:2.2" ---配置依赖
testCompile "junit:junit:4.12"
}
jar {
baseName = 'gs-gradle'---打成jar的名称(已经过期l)
version = '0.1.0'
}

这里可以改jar名称 否则会打俩个包

dependencies -compile

分为 providedCompile、testCompile

Gradle Wrapper

包含linux+IOS+Window ,(没有安装gradle环境也可以使用gradle构建)。
用途:Add it to your version control system, and everyone that clones your project can build it just the same
每一个克隆项目的人 ()有gradle Wrapper文件的都可以直接构建此项目(不用安装gradle)
1、 gradle wrapper --gradle-version 2.13 (生成gradle构建版本文件)

生成的文件格式

2、运行./gradlew build 或者 运行gradlew.bat (gradle构建)


已经构建好了 但是至少生命了依赖而已 还不能运行
3、 use gradle’s application plugin
添加-+
apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
4、./gradlew run 或者gradlew.bat run

RESTful Web Service

Building a RESTful Web Service

发送参数(设置默认差数)和设置依赖

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

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

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}

test {
	useJUnitPlatform()
}

返回值参数



AtomicLong 可以自动增加返回值

JOSN

uses the Jackson JSON library to automatically marshal instances of type Greeting into JSON.

Resource Controller

构建一个可执行的jar包

springboot命令

编译运行spring服务 ./gradlew bootRun

构建 ./gradlew build
运行jar包 java -jar build/libs/gs-rest-service-0.1.0.jar

http://localhost:8080/greeting http://localhost:8080/greeting?name=User

上传文件

MultipartConfigElement class

(which would be in web.xml)
这个MultipartConfigElement上传的配置 springboot 已经配好了(自动配置)
As part of auto-configuring Spring MVC, Spring Boot will create a MultipartConfigElement bean and make itself ready for file uploads.

最好放在nosql文件存储 或者数据库

control

storageService

private final StorageService storageService;

	@Autowired
	public FileUploadController(StorageService storageService) {
		this.storageService = storageService;
	}

上传限制

启动时候删除所有文件

FileSystemStorageService

文件服务

找不见文件的自定义异常

StorageFileNotFoundException

文件位置配置

改变文件路径


结果

可以学习



获取配置类来 初始化final对象的时候 (保证bean是唯一的 不可改变的)

继续看官网教程
Spring Boot有四大神器,分别是auto-configuration、starters、cli、actuator

定时任务(scheduling tasks)

1、周期任务

2、开启定时任务

springboot入门

启动类CommandLineRunner

spring的测试

1、依赖

testImplementation('org.springframework.boot:spring-boot-starter-test') {
	exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}

2、MockMvc模拟请求测试

@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {

	@Autowired
	private MockMvc mvc;

	@Test
	public void getHello() throws Exception {
		mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(content().string(equalTo("Greetings from Spring Boot!")));
	}
}

3、全堆栈集成测试(full-stack integration test)

@BeforeEach 在@test前执行

Groovy是一种基于JVM的敏捷开发语言,是用于Java虚拟机的一种敏捷的动态语言

actuator module(致动器模块)(provides several such services (such as health, audits, beans, and more) )

应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等。

默认不能使用/actuator/shutdown 需要手动配置

Securing a Web Application

用途:登录拦截

使用thymeleaf

放置thymeleaf的html

托管springMVC

@Configuration
public class MvcConfig implements WebMvcConfigurer {

	public void addViewControllers(ViewControllerRegistry registry) {
		registry.addViewController("/home").setViewName("home");
		registry.addViewController("/").setViewName("home");
		registry.addViewController("/hello").setViewName("hello");
		registry.addViewController("/login").setViewName("login");
	}

}

拦截未授权的用户(prevent unauthorized users from viewing the greeting page at /hello)

spring-security依赖

implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.security:spring-security-test'

WebSecurity配置

配置登录注销配置页面

login登录成功去/home 失败去/login?error 注销用户/login?logout

http://localhost:8080

SpringJDBC (JdbcTemplate 关系型数据)

依赖

implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
	runtimeOnly 'com.h2database:h2'

直接命令行启动

插入语句

First, install some DDL by using the execute method of JdbcTemplate.

Second, take a list of strings and, by using Java 8 streams, split them into firstname/lastname pairs in a Java array.

Then install some records in your newly created table by using the batchUpdate method of JdbcTemplate. The first argument to the method call is the query string. The last argument (the array of Object instances) holds the variables to be substituted into the query where the ? characters are.
首先,使用jdbctemplate的执行方法安装一些ddl。

其次,获取一个字符串列表,通过使用java 8 streams,在java数组中将它们分成名字/姓氏对。

然后使用jdbctemplate的batchupdate方法在新创建的表中安装一些记录。方法调用的第一个参数是查询字符串。

最后一个参数(对象实例数组)保存要替换到查询中的变量。

查询语句(使用了lamb表达式 比较难以理解)



使用h2的数据库 没有数据库配置环境

posted @ 2020-09-02 19:53  云行雨步  阅读(988)  评论(0编辑  收藏  举报
Title - Artist
0:00