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
这个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的数据库 没有数据库配置环境