Spring Boot快速入门

avatar 2019年11月12日20:56:40 评论 1,153 次浏览

一、Spring Boot快速创建项目

创建Spring Boot有两种方式,第一种是在官网,第二种是使用IDEA工具创建,先看看第一种,在官网上创建。登录到下面这个网站上。

https://start.spring.io/

如下图:

Spring Boot创建完成,下面使用IDEA创建

File---New---Project如下图:

选择 Spring Initializr ,然后选择默认的 url 点击【Next】:

修改一下项目信息

选择好项目的位置,点击【Finish】:

支持Spring Boot项目创建完了,下面使用IDEA打开一下看看

项目结构注解

  • Springbootdemo1Application: 一个带有 main() 方法的类,用于启动应用程序
  • Springbootdemo1ApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文
  • application.properties:一个空的 properties 文件,可以根据需要添加配置属性
  • pom.xml: Maven 构建说明文件

二、设置Spring Boot

测试一下创建的是否成功,为了测试效果,创建一个接口,在src-main-java-comm.example.springbootdemo1目录下创建一个文件名为HelloController的java class文件。

package com.example.springbootdemo1;

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


public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
}

启动Spring Boot项目,鼠标右键Springbootdemo1Application运行

看一下启动日志

Spring Boot内部有tomcat所以直接启动Spring Boot即可内部会自动启动tomcat,看一下效果。

修改Spring Boot的默认端口

默认的Spring Boot的默认端口是8080,如果一台服务器上使用多个Spring Boot项目就需要把端口进行分一下使用不同的端口,下面修改Spring Boot的端口。

在resources目录下的application.properties文件中修改端口

server.port=8082
server.context-path=/hello

把访问的url修改成

http://localhost:8082/hello/

即可

Spring Boot配置文件

Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。

Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

application.properties文件的

server.port=8081
server.context-path=/hello
@PropertySource(value="classpath:application.properties",encoding = "UTF-8")
name: 我今年多大了
age: 22

和application.yml的

server:
  port: 8081
  server:
    context-path=/hello
name: 我是谁,请告诉我
age: 22

相同,两个配置文件根据自己爱好,配置其中一个即可。

举个例子:

HelloController文件中内容如下:

package com.example.springbootdemo1;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

//    @Value("${name}")
//    public String name;
//    @Value("${age}")
//    public Integer age;

    @Value("${content}")
    public String content;

    @RequestMapping("/hello")
    public String hello() {
//        return "Spring Boot ";
        return content;
    }

}

application.properties文件内容:

server.port=8081
server.context-path=/hello
@PropertySource(value="classpath:application.properties",encoding = "UTF-8")
name: 我今年多大了
age: 22
content: ${name}, ${age}

application.yml如果使用application.yml文件的内容需要把application.properties文件内容注释掉

server:
  port: 8081
  server:
    context-path=/hello
name: 我是谁,请告诉我
age: 22
content: ${name},${age}

使用浏览器浏览之后,两者展现内容格式一样,也可以在尝试把content注释掉,分别打印两个变量,需要在HelloController文件中内容如下:

package com.example.springbootdemo1;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Value("${name}")
    public String name;
    @Value("${age}")
    public Integer age;

//    @Value("${content}")
//    public String content;

    @RequestMapping("/hello")
    public String hello() {
//        return "Spring Boot ";
        return name + age;
    }

}

Spring Boot热部署

Spring Boot 提供了热部署的方式,当发现任何类发生了改变,就会通过 JVM 类加载的方式,加载最新的类到虚拟机中,这样就不需要重新启动也能看到修改后的效果了。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>

Spring Boot支持JSP

Spring Boot默认是不支持jsp的,所以增加jsp插件,在pom.xml文件中,在dependencies里面。

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <!-- Provided 编译和测试的时候使用-->

    <!-- 对jsp的支持的依赖 -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>

在src/main目录下创建webapp/WEB-INF/views,并在views目录下创建一个jsp文件,这里创建的jsp文件文件名需要和接口返回的字符串一样。这里使用的jsp.jsp文件

<%--
  Created by IntelliJ IDEA.
  User: wolf
  Date: 2019-08-06
  Time: 19:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${name}     
<%--打印变量name--%>
</body>
</html>

配置接口这里选择在resources中创建config目录在config目录中增加一个application.yml文件进行配置

#接口端口
server:
  port: 8003
#  接口路径
  servlet:
    context-path: /learn

#调用jsp
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

创建Spring Boot入住函数在src/main/com.example.springbootjsp下创建JspController java文件

package com.example.springbootjsp;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class JspController {


    @RequestMapping("/jsp")
    public String jsp(Model m){
        m.addAttribute("name","这是一个jsp测试也没");
        return "jsp";
    }

}

创建后需要更新一下maven,右键pom.xml---Maven---Reimport,下面是jsp项目结构:

以下是对于jsp在调用的过程中遇到的问题和解决方法

在Spring Boot项目中创建jsp文件的时候出现找不到jsp模版,下面问题解决方法:

File--Project Structure如下图:

创建Spring Boot项目中的jsp功能时出现的错误:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Aug 06 18:46:12 CST 2019
There was an unexpected error (type=Not Found, status=404).
/learn/WEB-INF/views/hello.jsp

主要是路径错误了,WEB-INF/views/hello.jsp这个文件是在webapp目录下,但是webapp目录是在src/main目录下的

查看pom.xml中下载的包,

pom.xml:中的包没有下载,导致jsp不能使用,可以右键pom.xml--Maven--Reimport,如图:

IDEA 中导入的Spring Boot项目,在程序入口处右键单击没有出现run as的程序启动,主要是因为mave projects中没有加载项目,需要点击“+”号,添加项目,然后进行项目的编译打包,

知识点引申

其实上面application.properties一共有两个目录可以放置:

注:1的优先级大于2的优先级

日志出现下面的问题解决:

2019-08-05 16:12:03.473  INFO 7505 --- [           main] c.e.s.Springbootdemo1Application         : Started Springbootdemo1Application in 2.81 seconds (JVM running for 4.032)
2019-08-05 16:12:07.576  INFO 7505 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-08-05 16:12:07.576  INFO 7505 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-08-05 16:12:07.587  INFO 7505 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 11 ms

访问的时候出现,可以在resources目录application.properties配置文件中设置如下配置项指定启动时初始化:

spring.mvc.servlet.load-on-startup=100

在application.properties中创建了中文,浏览的时候乱码解决方法:

第一种在IDEA设置中Editor--File Encodings 把Project Encoding:后面设置成UTF-8,下面的Properties Files(*。properties)设置成UTF-8,在勾上后面的[Transparent native-to-ascil conversion]

第二种在application.properties中增加[@PropertySource(value="classpath:application.properties",encoding = "UTF-8")]重启即可

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: