Spring Boot 系列(一)快速入门

简介

  • Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者的。

Spring Boot 具有如下特性

  1. 为基于 Spring 的开发提供更快的入门体验
  2. 开箱即用,没有代码生成,也无需 XML 配置。同时也可以修改默认值来满足特定的需求。
  3. 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
  4. Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

配置工具

  1. JDK1.8
  2. Maven(也可以使用非maven工具搭建)
  3. IDE(Eclipse、IntelliJ 或者其它的)

一、构建简单spring boot 项目

这里官网提供的生成器SPRING INITIALIZR 来创建简单的spring boot 项目。

1.访问 http://start.spring.io

选项: 工程(maven) 语言(java) SpringBoot版本(2.0.3)

Group填组名,Artifact填模块名,右侧Dependencies 可以选择相应的依赖,因为我们要构建web项目,所以可以添加web的依赖。

点击 Generate Project 生成下载项目。

2.使用IDEA创建项目(这里使用IntelliJ IDEA)

FILE > New > Project > 选择 Spring Initializr 然后直接下一步,完成默认创建

勾选web 和 DevTools > 点击finsh完成创建

pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

    <!--起步依赖-->  
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
        <!--web项目相关依赖-->  
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

        <!-- 热部署 -->  
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>

         <!-- 单元测试 -->  
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>

		    <plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!-- 没有该配置,devtools 不生效 -->
					<fork>true</fork>
				</configuration>
			</plugin>
		</plugins>
	</build>


</project>

3.创建controller

新建controller包,包下新建HelloController

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "hello world";
    }

}

4.程序自动创建了 DemoApplication 会有一个@SpringBootApplication的注解,这个注解用来标明这个类是程序的入口

@SpringBootApplication开启了Spring的组件扫描和springboot的自动配置功能,相当于将以下三个注解组合在了一起

(1)@Configuration:表名该类使用基于Java的配置,将此类作为配置类

(2)@ComponentScan:启用注解扫描

(3)@EnableAutoConfiguration:开启springboot的自动配置功能

运行DemoApplication.java 启动项目,启动日志可以看到端口为8080

打开浏览器访问:http://localhost:8080/hello 可得结果。

说明项目运行方式: 
- 在idea中,直接运行DemoApplication.java 文件。 
- 把项目通过maven命令 mvn package 打成jar包,通过命令 java -jar demo-0.0.1-SNAPSHOT.jar 直接执行jar包 
- 借助maven插件,执行mvn spring-boot:run 即可运行项目。

5.加载配置文件application.yml(我们这里是有yml配置,不使用传统的properties配置)

# Tomcat
server:
    tomcat:
        uri-encoding: UTF-8
        max-threads: 1000
        min-spare-threads: 30
    port: 8080

6.配置日志

    6.1 配置 logback(官方推荐使用)

    6.2 配置日志文件

spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback.xml。

如需要自定义文件名称,在 application.yml中配置 logging.config 选项即可。

在 src/main/resources 下创建 logback.xml 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

	<property name="project_Name" value="boot-api" />
	<property name="logPath" value="logs" />
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{35} - %msg %n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<!-- 全部日志 -->
	<appender name="ROLLING_ALL"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/all/all.log</file>
		<!-- 每天滚动 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/all/all-%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
			<!-- 保存90天 -->
			<maxHistory>90</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<!-- 按日期和文件大小滚动,每个文件100MB -->
				<maxFileSize>100MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{35} - %msg %n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<!-- WARN级别日志 -->
	<appender name="ROLLING_WARN"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/warn/warn.log</file>
		<!-- 每天滚动 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/warn/warn-%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
			<!-- 保存90天 -->
			<maxHistory>90</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<!-- 按日期和文件大小滚动,每个文件100MB -->
				<maxFileSize>100MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{35} - %msg %n</pattern>
			<charset>UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>WARN</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>


	<!-- ERROR级别日志 -->
	<appender name="ROLLING_ERROR"
		class="ch.qos.logback.core.rolling.RollingFileAppender" level="ERROR">
		<file>${logPath}/error/error.log</file>
		<!-- 每天滚动 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/error/error-%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
			<!-- 保存90天 -->
			<maxHistory>90</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<!-- 按日期和文件大小滚动,每个文件100MB -->
				<maxFileSize>100MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{35} - %msg %n</pattern>
			<charset>UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<root level="DEBUG">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="ROLLING_ALL" />
		<appender-ref ref="ROLLING_WARN" />
		<appender-ref ref="ROLLING_ERROR" />
	</root>
</configuration>

7.打包运行

打包的形式有两种:jar 和 war。由pom的packaging来控制

  1. 默认情况下,通过 maven 执行 package 命令后,会生成 jar 包,且该 jar 包会内置了 tomcat 容器,因此我们可以通过 java -jar 就可以运行项目
  2. 打war包 修改 pom.xml 文件,将 jar 改成 war,如下图,打包成功后,将 war 包部署到 tomcat 容器中运行即可

让 DemoApplication类继承 SpringBootServletInitializer 并重写 configure 方法,如下:

 

 

官方文档 https://docs.spring.io/spring-boot/docs/1.5.8.RELEASE/reference/html/ 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值