初涉springboot(二)
概述
1、环境说明
2、HelloWorld项目细节
3、小结
一. 关于环境补充
在上一篇的HellWorld项目中,我们构建SpringBoot项目,采用的是jdk1.8版本,springboot官方建议配合jdk1.7及其以上版本来开发springboot。而如springboot1.5.8中一些@Repeat注解都是jdk1.8才有的,所以建议是jdk1.8版本及以上来开发。同时,SpringBoot提供嵌入式的Tomcat,直接打成jar包便可运行。IDEA打包过程如下:
包的位置默认位置是在target目录下 。打包好后,可以通过在命令行 java jar xxx.jar 直接运行。 并且,我们可以通过解压工具看一下,这个xxx.jar中的内容。来到lib目录下,我们可以看到有导入tomcat-embed字样的包,这就是springboot内嵌的tomcat容器,可以直接运行这个springboot的jar包,不需要打成war放到webapp目录中运行。其中也导入了运行web项目所需的基本jar包,均是自动化配置。
二. Hello World项目的细节
看完了环境,接下来看看该项目的pom.xml文件,来看看为什么springboot能替我们做了这么多“人性化”的工作。
在POM文件中,我们可以看到有如下的,不同以往的配置。我们来一 一解释。
1. 父级依赖
①、首先看到我们的是springboot-helloworld.pom.xml文件中依赖了此父级依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.18.BUILD-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
②、ctrl + 左键 点击 spring-boot-starter-parent 进入此父项目,发现其也依赖一个父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.18.BUILD-SNAPSHOT</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
③、点击spring-boot-dependencies,进入查看父项目 ,可以发现,这里文件中配置了大量的版本依赖属性,
ps : 在<properties>标签中,在此不截图。
可以看到,在 spring-boot-dependencies项目中配置了我们熟知的一些组件的版本,如连接池、切面、json版本。它是真正管理 SpringBoot组件版本的 管理中心。因为它的存在,只要它有配置的,我们都可以不配置依赖的版本,SpringBoot自动帮助我们配置。当然,我们也可以自己添加、修改没有的或者已有的组件的版本,只需要在我们自己项目的pom.xml文件的 <properties>属性添加即可:
spring-boot-dependencies.pom默认配置:
<spring.version>4.3.20.RELEASE</spring.version> 自己的pom文件中加入即可修改:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring.version>5.0.0.RELEASE</spring.version>
</properties>
2. starter 启动器
何为“启动器”,自然是通过这个“东西”去启动对应的特定功能。同样的,我们能在父项目 spring-boot-dependencis.pom中看到,在<dependencies>标签中看到大量的 spring-boot-starter-xxx组件。再结合我们helloworld项目中的pom:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
没错,它的功能就是,我们需要什么功能的组件,就导入什么 starter ,springboot就可自动为我们添加该组件。上述我们需要springboot的web功能,就对应配上spring-boot-starter-web 组件。着实方便。
3.插件
在helloworld中的插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这个插件是帮助我们打成jar包用。在初涉springboot(一)中,我们通过 package命令直接打成jar包而不是war,得益于此。
4. @SpringBootApplication 注解
在主程序入口中,我们是通过执行此注解所在类的main方法跑动项目的,这个注解标识此为主程序类,是一个Spring Boot应用。此注解要放在其他类的同级目录或子目录之下,否则会找不到其他类。(这是个坑,因为SpringBoot默认配置了扫描的位置。) 关于@SpringBootApplication注解后续会详述。
三.小结
要称为一个SpringBoot项目,就需要标注 @SpringBootApplication注解代表程序入口;
启动器starter引入功能;
父级依赖的spring-boot-dependencies.pom则配置了默认版本。
三者相互作用,跑动第一个SpringBoot项目。
如有错误,敬请斧正,以免误导他人。
初涉springboot(二)的更多相关文章
- spring-boot(二)
学习文章来自:http://www.ityouknow.com/spring-boot.html web开发 spring boot web开发非常的简单,其中包括常用的json输出.filters. ...
- 初涉springboot(一)
概述 1.了解springboot的作用 2.构建第一个springboot项目 一.springboot的作用 ① 原先在构建SSM项目的时候,可以感觉到,在一些不是很大的项目,构建配置文件的过程所 ...
- springboot(二十二)-sharding-jdbc-读写分离
前面我们使用sharding-jdbc配置了分库分表.sharding-jdbc还有个用法,就是实现读写分离. 什么时候需要或者可以使用读写分离? 当我们的项目所使用的数据库查询的访问量,访问频率,及 ...
- springboot(二).springboot整合logback用于日志输出
springboot整合logback用于日志输出 我们项目的基本框架已经完成,http请求已经可以访问,现在给我们的框架添加日志记录的功能并能将每天的记录记录到文件中去 在这里,我们使用logbac ...
- SpringBoot(二) -- SpringBoot配置
一.配置文件 SpringBoot可以使用两种类型的配置文件(文件名固定): application.properties application.yml 配置文件的作用就是来修改SpringBoot ...
- springboot(二):web综合开发
上篇文章介绍了spring boot初级教程:spring boot(一):入门篇,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spring boot的其它 ...
- Springboot(二):Spring Boot 之 HelloWorld
关于项目的创建不再解释,需要了解的请参考: Springboot(一):使用Intellij中的Spring Initializr来快速构建Spring Boot工程 目录结构: 首先我们在上一项目的 ...
- SpringBoot(二):设置springboot同一接口程序启动入口
根据上一篇文章中搭建了一个springboot简单工程,在该工程中编写HelloWordController.java接口类,并在该类中写了一个main函数,做为该类的接口服务启动入口.此时如果新增多 ...
- Spring-boot(二)yml文件的使用
上一章创建了一个简单的springboot项目,配置可以说非常的简单. 不过,在实际开发中不可能都用默认的配置,还是需要根据自己的实际项目需求有自定义的配置的. 比如:端口号需要变更,模板引擎的缓存开 ...
随机推荐
- H5小游戏——看你有多色
使用了封装了canvas的create.js库来实现的. 最终效果: 工程: Rect.js /* * 方块类 */ function Rect(n,color,specialColor){ crea ...
- 使用npm安装包失败的解决办法(使用npm国内镜像介绍)
镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set registry https://regist ...
- 组合数+逆元 A - Chat Group Gym - 101775A
题目链接:https://cn.vjudge.net/contest/274151#problem/A 具体思路:我们可以先把所有的情况算出来,为2^n.然后不合法的情况减去就可以了.注意除法的时候要 ...
- P-R曲线及与ROC曲线区别
一.P-R曲线 P-R曲线刻画查准率和查全率之间的关系,查准率指的是在所有预测为正例的数据中,真正例所占的比例,查全率是指预测为真正例的数据占所有正例数据的比例. 即:查准率P=TP/(TP + FP ...
- 如何在Linux启动的时候执行一个命令
在Linux启动起来时,执行一个命令的设置方法== 例如:需要执行的命令是cvslockd ============第一种方式:根据运行级别配置======================== 第一步 ...
- Error -27796: Failed to connect to server "ip地址": [10060] Connection timed out
如果出现Error -27796: Failed to connect to server "ip地址": [10060] Connection timed out 这样的错误,如 ...
- centos6.5 安装、启动vnc
一.安装vnc 1.确保当前账号是root2.查看本机是否已经安装vncserver rpm -qa|grep tigervnc 3.安装vncserver yum -y install tigerv ...
- tp总结
不知不觉学tp也快一个月了,虽然还处于一个仅仅只会使用的阶段,但毕竟算是我详细接触的第一个脚本框架,tp还是让我收获了许多. 废话不多说,先列出几个对于我这种新手来说tp新奇而实用的地方. 1.连贯操 ...
- LightOJ - 1010 Knights in Chessboard(规律)
题目链接:https://vjudge.net/contest/28079#problem/B 题目大意:给你一个nxm的棋盘,问你最多可以放几个骑士让他们互相攻击不到.骑士攻击方式如下图: 解题思路 ...
- **[权限控制] 利用CI钩子实现权限认证
http://codeigniter.org.cn/forums/thread-10877-1-1.html 一直没找到CI的权限认证扩展,以前好像找到过一个老外的扩展,不过不怎么好用,现在记不清了, ...