陈世涛:SpringBoot学习笔记
1.环境配置
先做完maven的相关配置,详见以下内容!
1.maven服务仓库已经设置好!设置文件为C:\maven放在C盘根目录下\apache-maven-3.5.2\conf的setting.xml!
为了提高maven中央仓库的下载速度,更改中央仓库为国内的阿里云maven中央仓库的方法是,在setting.xml中的merrors下添加如下代码
<!--更改maven中央仓库的地址为阿里云maven-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2.环境变量设置:我的电脑-右键属性-高级系统设置-环境变量!
注意配置maven环境变量之前必须先设置了java的环境变量!
系统变量栏中新建变量名:MAVEN_HOME,变量值:C:\apache-maven-3.5.2。
然后新加到path中:%MAVEN_HOME%\bin
3.helloword例子实验:cmd进入命令运行界面,
(0)查看mvn是否安装配置好?:mvn - v
(1)输入 cd C:\maven-helloworld
(2) 再次输入c:
(3)清除target(编译文件)文件夹实验,输入命令:mvn clean
(4)生成target(编译文件)文件夹实验,输入命令:mvn compile
(5) 生成Test文件,编译测试代码,输入命令:mvn test
(6)打包文件为 .war,输入命令:mvn package
备注:打成war包或jar包主要是在pom.xml文件里进行设置的: <packaging>war</packaging>
以上文件变化体现在target文件夹的变化上。
(7)将项目文件安装到本地仓库,命令:mvn install
执行后发现:C:\maven_repository路径下多了一个cn文件夹,里面有war包!
备注:该命令执行了3.4.5.6所有的操作,然后又把包放在了本地仓库!
4.maven生命周期包括
(1)编译 :(最好先mvn clean)mvn compile
(2)测试:mvn test
(3)打包:mvn package
(4)安装:mvn install
(5)发布:(预先先配置)mvn deploy
备注:后面命令执行时,会把前面的命令自动执行一遍!
5.以下是对初次使用IDEA软件时候的一些设置:
(1)在初始界面下侧点击“Configure”选择“Project Default”选择“Setting”进入Default Settings界面,
菜单“Build,Excecution,Deployment”下选择Buid Tools下点击“Maven”。
(a)Maven home directory:C:/apache-maven-3.5.2
(b) User settings files:C:\apache-maven-3.5.2\conf\settings.xml 对号Override
(c)Local repositiory : C:\maven_repository 对号Override
(2) Maven 菜单下选择“Runner”,配置作用:为了确保在不联网的情况下也可以正常使用Maven创建工程!
VM Options: -DarchetypeCatalog=internal
6.使用IDEA点击创建工程,在左侧选择maven,右侧选择骨架(模板),要使用骨架必须联网或者本地已经下载好了骨架,
如果要使用骨架需要把 “Create from archetype”前的对号打上,创建java工程的时候选择org.apache.maven.archetypes
:maven-archetype-quickstart,进入下一个界面:GroupId:“公司的名字,如:cn.itcast”,ArtifactId:项目工程名字。
再下一步,会看到再次确定当前使用的配置。进入项目,会自动下载文件,使能自动下载!
7.补全文件目录
(1)在main文件右键新建directory 写入名字“resources”
(2)在新建的文件夹右键选择“Mark Directory as”-----"Resources Root"
(3)在改文件夹下就可以建配置文件了
8.不适用骨架的时候怎样用IDEA创建工程?
(1)创建新工程
(2)左侧选择“maven”,右侧不选
(3)填写当前项目的坐标,“公司名字”“项目名字”,下一步
(4)默认路径直接 Finish,最后发现,除了给定的"hello word" 没有,其他的都有,反而方便了很多。
(5)java工程推荐“不适用骨架”!
9.如何构建一个“javaweb”项目
(1)其他的都一样,只是骨架选择“Org.apache.maven.archetypes:maven-archetype-webapp”
10.Maven跳转的servlet,例子:
(1)进入项目界面,新建“java”文件夹目录,
(a)在“main”上右键选择新建“Derictory”,名字为“java”
(b)java上右键选择“Mark Derictory As” ----“Source Root”
(2)在新建的文件夹下再加一个“servlet”文件夹,右键新建“servlet”,会发现没有“servlet”选项,
是因为“pom.xml”中没有写入依赖,需要添加,
<dependency>
2..................<groupId>javax.servlet</groupId>
1.............. <artifactId>servlet-api</artifactId>
3................ <version>2.5</version>
</dependency>
<!--自动提示很方便-->
(3)新建servlet
GET:
request.getRequestDispatcher("/hello.jsp").forward(request,response);
POST:
doGet(request,response);
(3)更改xml
<servlet>
<servlet-name>mybigServlet</servlet-name>
<servlet-class>cn.itcast.servlet.mybigServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mybigServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
(4)在右侧“Maven Projects”中运行“clean”
三钉耙里运行“tomcat:run”
(5)提示错误:“Starting Servlet Engine: Apache Tomcat/6.0.29”
提示是用的Tomcat6启动的项目,我们用Tomcat:run启动项目时,默认的就是Tomcat6 启动,可是我用下载的Tomcat8,这时候就要在pom.xml文件中添加Tomcat8的依赖。
10.关于tomacat,maven自带的是Tomcat6版本的,可以使用tomcat7插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8888</port>
</configuration>
</plugin>
java编译环境插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.8</target>
<source>1.8</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
如果使用tomcat8以后的版本,特别麻烦,maven中央仓库中没有提供高版本的jar包,网上使用了很多方法,但没有成功!放弃!
11.如何创建动态模板,用于快速输入,适用于其他编程。
【file】-【settings】-“搜索【live】”-选择【Live Templates】--右侧【+】--【Template Group】新建模板组--点中模板组名字--右侧【+】新建模板--Abbreviation【缩写】中填上名字--在【Template text】中填写代码,在下面的【Define】中选择什么文件中可以调用。
在profiles文件夹下填写如下内容:
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
2.IDEA配置
1.Maven相关的配置如上面所述!
3.HelloWorld
1.新建项目
还是使用上面的方法新建一个maven项目,右侧选择**web
2.补全项目结构
1.src下新建test目录,并建子目录java(应用为test -source…)和 resources(应用为test-resources)
2.在现有的main文件夹下新建子目录java(应用为source…)和 resources(应用为resources)
3.编辑pom文件
1.后添加,集成父
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
</parent>
2.里添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.对【starter】的解释
starters:启动器
springboot-starter-XXXX starters是一组方便的依赖关系描述符,方便自动导入,是对原maven的升级和简化
4.建立helloword类
1.在webapp下建立com.shenhua包,在该包里新建类,取名“application”,写入以下代码!
package com.shenhua;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
//开启自动配置的注解,初始化spring和spring MVC环境
@EnableAutoConfiguration
//控制类注解
@RestController
//控制类
public class application {
public static void main(String[] args) {
// 以下是Spring的应用类,用来情动SpringBoot,是一个Web容器
// 参数1:传入入口类的类对象 参数2:main函数的参数
SpringApplication.run(application.class,args);
}
//基于Spring MVC controler的一个方法
@GetMapping("/hello")
public String hello(){
System.out.println("hello SpringBoot!!!");
return "hello world!";
}
}
2.备注
(1)在写这句时出现问题,SpringApplication.run(application.class,args);里面的application指的是本函数的名字,而不是其他,无需import。
(2)直接运行方法!
(3)在浏览器中输入: http://localhost:8080/hello ,查看运行效果!
5.控制类和入口类剥离做法
1.在main->java->com->shenhua文件夹下新建一个文件夹:controler
2.在controler中新建一个类:HelloControler.java
package com.shenhua.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("hello")
public class helloCtroller {
//基于Spring MVC controler的一个方法
@GetMapping("/hello")
public String hello(){
System.out.println("hello SpringBoot!!!");
return "hello world!";
}
}
3.原来application文件里的内容为
package com.shenhua;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
//开启自动配置的注解
@EnableAutoConfiguration
//扫描注解的注解,扫描范围为本层目录或本层文件夹里的内容
@ComponentScan
public class application {
public static void main(String[] args) {
// 以下是Spring的应用类,用来情动SpringBoot,是一个Web容器
// 参数1:传入入口类的类对象 参数2:main函数的参数
SpringApplication.run(application.class,args);
}
}
6.yml配置文件的应用
1.在main->resources文件夹下建立application.yml
server:
port: 8989 #修改内嵌tomcat容器的端口号
servlet:
context-path: /aaa #指定当前应用在部署到内嵌容器中的项目名
2.这样项目的访问路径就变为
http://localhost:8989/aaa/hello/hello
7.Properties配置文件的应用
1.因为yml容易出错,所以以后用Properties的形式进行配置
4.常用注解
1.注解的解释
-
@EnableAutoConfiguration:开启自动配置 修饰范围:只能用在类上
实际作用:根据pom文件自动判断,会自动根据引入的依赖构建相关的环境spring环境和web容器环境
-
@ComponentScan:作用:用来开启注解扫描,修饰范围“只能用在类上。默认范围:默认当前包以及当前包下的子包
-
@RestController:作用:用来实例化当前对象为一个控制器对象,并将类上所有方法的返回值转为json,响应给浏览器。修饰范围:用在类上
@Controller(实例化当前类为一个控制器)+@ResponseBody(用来将当前方法返回值转为json,响应给浏览器)
-
@RequestMapping:作用:用来加入访问路径,修饰范围:类(加入命名空间)方法上(指定具体路径)
@GetMapping:作用:限制请求方式只能是GET,并制定路径,修饰范围:方法上
@PostMapping:作用:想定请求方式只能是POST,并指定路径 修饰范围:方法上
5.打成jar包或者war包
1.导入插件和配置
1.如下图所示的位置添加插件
<build>
<finalName>day1</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
添加插件之后,在右侧的maven工程管理里,刷新,在【plugin】里会多一个【spring-boot】的插件。
2.修改pom文件
如果工程为web工程的话,需要做以下更改,把war换成jar
原来的:
<groupId>shenhua</groupId>
<artifactId>day1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
修改后的:
<groupId>shenhua</groupId>
<artifactId>day1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
2.执行打包操作
在右侧maven栏下,找到【Lifecycle】生命周期,点击【package】,执行打包操作。
在左侧的项目结构目录中的【target】中就会看到jar文件了。
3.IDEA中运行jar包并访问
在IDEA最下面选择【Terminal】运行DOS命令
E:\CST\Maven\a3>cd target
E:\CST\Maven\a3\target>java -jar day1.jar
访问
http://localhost:8989/aaa/hello/hello
4.Windows中运行jar包的方法
前提是系统配置了java环境!
方法1.简便方法
1.找到jar包位置
2.先摁着【shift】,鼠标指针移到jar文件上,右键,选择在powershell中打开项目,win10和其他系统或许不一样。
方法2.常规方法
1.cmd打开Dos 按enter
2.输入E: 按enter
3.输入cd CST\Maven\a3\target 按enter
4.java -jar day1.jar
5.访问
http://localhost:8989/aaa/hello/hello
6.结束
直接关闭窗口就OK了
6.SpringBoot标准开发方式
1.其他的配置不变,知识写入口函数是的注解换成了一个组合注解,简化了写注解的难度!
package com.shenhua;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
////开启自动配置的注解
//@EnableAutoConfiguration
////扫描注解的注解,扫描范围为本层目录或本层文件夹里的内容
//@ComponentScan
@SpringBootApplication
public class application {
public static void main(String[] args) {
// 以下是Spring的应用类,用来情动SpringBoot,是一个Web容器
// 参数1:传入入口类的类对象 参数2:main函数的参数
SpringApplication.run(application.class,args);
}
}
7.管理自定义的类
springboot提供两种方式来管理自定义的类(对象),一种是基于java配置方式——javaconfig(推荐使用),另一种通过传统的xml的配置——xmlconfig
1.javaconfig方式
通过给自定义的java类添加注解的方式来管理自定义的javaclass
方法是:
1.先给自建的javaclass添加 @Configuration()(翻译:结构构造配置)
2.通过**@ComponentScan**注解扫描注解,加以利用