Spring Boot从零到一

标签: Springboot 分类: Java 创建时间:2019-06-21 01:36:46 更新时间:2024-11-15 10:49:43

这一篇主要介绍如何从零开始开发一个Spring Boot的web应用程序。

1.环境搭建

至于Spring Boot环境的搭建,可以参考我的另一篇文章Java开发环境配置,主要就是安装java环境,安装tomcat,安装maven和安装idea集成开发环境,像jdk、tomcat和maven都可以免安装,主要就是配置环境变量,包括JAVA_HOME、CLASSPATH、MAVEN_HOME、TOMCAT_HOME、CATALINA_HOME,在path中加入.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%MAVEN_HOME%\bin这几个路径,就搞定了,对于linux系统来说,那就更加的简单了,只需要几行命令就可以了,sudo apt-get install open-jdk;sudo apt-get install maven;下载tomcat该配置环境变量的,配置环境变量就可以了。

2.初始化应用程序

基础的环境搭建成功了,然后就是要开发Spring Boot项目了,Spring Boot提供了贴心的一键生成功能,打开 start.spring.io 选择Maven project,选择Java语言,选择Spring Boot版本,填写工程信息,选择打包成war还是jar,选择Java版本,最后选择需要引入的其他依赖,最后Generate就完成了。

将下载的文件解压,可以看到Spring Boot生成的目录结构。

里面主要包含了src文件夹和pom.xml文件,pom.xml是maven的配置文件,剩下的mvnm,.mvn和mvnm.cmd主要是maven wrapper,起到控制maven版本的作用,其实你删掉也没多大毛病。这里需要说明的是,如果选择打包成jar文件,和打包成war文件是不一样的,用idea打开刚解压的文件夹,带依赖下载完成后,可以看到,在pom.xml中,引入了两个依赖,都是关于tomcat的。

同时也生成了一个ServletInitializer类,这个类是必须的,有了他才能在tomcat中运行。

点击idea中的debug按钮,一个Spring Boot应用就在8080端口启动了。

3.编写HelloWorld

应用程序启动了,这个时候你直接在浏览器中输入localhost:8080查看,会报错的,因为你没有配置视图解析器,比如Thymeleaf。

这个时候,可以在ServletInitializer文件的同目录下,简单的写一个test.java文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package cn.**;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/")
public class test {
@RequestMapping("HelloWord")
public String helloword(){
return "HelloWord";
}
}

重新运行SpringBoot程序,然后再浏览器中输入:http://localhost:8080/HelloWorld 可以看到输出结果为HelloWorld,这样一个完整Spring Boot可以运行于Tomcat容器中的应用程序就搭建完成了。

4.修改Maven自定义源码目录

从上一步的初始化应用程序开始,一个java web项目的默认目录是这样的,

1
2
3
4
5
6
7
8
9
10
11
12
13
app
--src
--main
--java //java源代码目录
--resources //资源文件目录
--static //前端静态资源目录
--templates //前端模板目录,即html、jsp等
--application.properties //或者是application.yml,spring boot的配置文件,配置应用端口,数据库等内容
--webapp
--test //测试代码目录
--target //打包目录
--pom.xml //maven配置文件

使用maven进行打包时,会将src/main/java,src/main/resources,src/test/java中的文件编译打包进webapp,默认的资源目录也是resources,所以你的jsp文件就要放到resources的templates下才能再预览、测试的时候被应用程序找到,如果放到别的地方,就需要单独配置。java的源码目录只有一个src/main/java,代码只有放到这个目录里面,才能被编译和运行,即便是你再main下再新建一个test目录成为src/main/test,test目录里面的代码也是无法被编译和处理的。如果像增加源码目录怎么办,可以再pom.xml文件中使用插件build-helper-maven-plugin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!-- 添加源码目录 -->
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>{version}</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<!-- 可以在这里添加多个source节点,来添加任意多个源文件夹 -->
<source>src/main/test</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

5.修改java版本

有时候,在电脑上安装了高版本的jdk,但是服务器上运行的低版本jave,为了顺利兼容,可以利用maven-compiler-plugin插件,来指定源代码的java版本和目标java版本。

1
2
3
4
5
6
7
8
9
10
11
12
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.11</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

6.添加阿里云的Maven仓库地址

在pom.xml中添加如下的仓库地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<repositories>
<repository>
<id>maven-ali</id>
<url>http://maven.aliyun.com/nexus/content/groups/public//</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>

7.启动、打包、运行应用程序

(1) 启动又有两种方式,一种是直接在命令行中输入: mvn spring-boot:run , 一种是使用idea的debug模式,一般都会选择debug模式吧。

(2) 至于打包命令,可以使用 mvm clean package ,如果配置了打包的profile,那就可以指定profile打包配置,mvn clean package -Ptest。

(3) 运行的话,如果是打包成war格式,那么直接放到tomcat下运行就可以了,如果打包成jar格式,那么直接使用: java -jar target/springbootTest-0.0.1-SNAPSHOT.jar, 运行jar文件即可。还可以指定配置文件:
java -jar [jar包的完整路径] –spring.profiles.active=dev,这个时候在resources文件夹下又application-dev.yml或者是application-dev.properties文件。还可以直接指定外部的配置文件:java -jar -Dspring.config.location=D:\config\config.properties springbootrestdemo-0.0.1-SNAPSHOT.jar

(4) linux后台运行,打印日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 查看进程
ps aux | grep java

## 杀死进程
kill -9 id

## 后台运行
## nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
## 当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中
nohup java -jar test.jar -Dspring.config.location=application.yml &
## 打印实时日志
tail -f nohup.out


## 这种方法会把日志文件输入到你指定的文件中,没有则会自动创建
nohup java -jar test.jar > temp.txt &

## 什么信息也不输出
nohup java -jar test.jar > /dev/null 2>&1 &

补充内容

使用:nohup java -jar test.jar >temp.txt & 会出现: 忽略输入并把输出追加到”nohup.out”或者nohup: 忽略输入重定向错误到标准输出端

改用:nohup ./kibana > /dev/null 2>&1 &

8.取消数据库配置

@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。springboot会自动注入数据源,而你却没有配,所以他就抛出该异常。

排除配置

1
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。