当前位置: 首页 > news >正文

Spring Boot 学习笔记(二)第一个 Spring boot 程序

 

SpringBoot程序创建方式

 1、创建一个Spring boot项目

     1) 可以采用方式一: 使用 eclipse 的 Spring Tool Suite (STS) 插件/或者 IDEA 自带的插件创建;

     2) 可以采用方式二:直接使用 Maven 创建项目的方式创建;

 

2、加入Spring boot 的父级和起步依赖;

插件方式创建有自带pom.xml,如果手动要自己添加。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5     <!--继承spring boot 的 父级项目依赖-->
 6     <parent>
 7         <groupId>org.springframework.boot</groupId>
 8         <artifactId>spring-boot-starter-parent</artifactId>
 9         <version>2.1.1.RELEASE</version>
10         <relativePath/> <!-- lookup parent from repository -->
11     </parent>
12 
13     <!--项目描述-->
14     <groupId>com.example</groupId>
15     <artifactId>springboot-web</artifactId>
16     <version>0.0.1-SNAPSHOT</version>
17     <name>springboot-web</name>
18     <description>Demo project for Spring Boot</description>
19 
20     <!--属性配置-->
21     <properties>
22         <java.version>1.8</java.version>
23     </properties>
24 
25     <!--spring boot 开发web项目的起步依赖-->
26     <dependencies>
27         <dependency>
28             <groupId>org.springframework.boot</groupId>
29             <artifactId>spring-boot-starter-web</artifactId>
30         </dependency>
31 
32         <!--spring boot 测试的起步依赖-->
33         <dependency>
34             <groupId>org.springframework.boot</groupId>
35             <artifactId>spring-boot-starter-test</artifactId>
36             <scope>test</scope>
37         </dependency>
38     </dependencies>
39 
40     <build>
41         <plugins>
42             <!--springboot提供的项目编译打包插件-->
43             <plugin>
44                 <groupId>org.springframework.boot</groupId>
45                 <artifactId>spring-boot-maven-plugin</artifactId>
46             </plugin>
47         </plugins>
48     </build>
49 
50 </project>

 

3、创建Spring boot 的入口main方法

 

4、创建一个Spring mvc 的Controller

 1 package com.example.springbootweb.controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.ResponseBody;
 6 
 7 @Controller
 8 public class HelloController {
 9     @RequestMapping("/boot/hello")
10     public @ResponseBody String hello()
11     {
12         return "hello spring boot";
13     }
14 }

 

5、运行Spring boot的入口main方法

通过eclipse、idea右键运行main方法,浏览器访问http://localhost:8080/boot/hello,页面显示 hello spring boot

 

SpringBoot程序开发流程解析

1、Spring Boot 的父级依赖spring-boot-starter-parent配置之后,当前的项目就是Spring Boot项目。

2、spring-boot-starter-parent是一个特殊的starter依赖,它用来提供相关的Maven默认依赖,使用它之后,常用的jar包依赖可以省去version配置。

3、Spring Boot提供了哪些默认jar包的依赖,可查看该父级依赖的pom文件。

4、如果不想使用某个默认的依赖版本,可以通过pom.xml文件的属性配置覆盖各个依赖项,比如覆盖Spring版本:

<!--属性配置-->
<properties>
    <spring.version>5.0.0.RELEASE</spring.version>
</properties>

5、@SpringBootApplication 注解是Spring Boot项目的核心注解,主要作用是开启Spring自动配置。至少要是同级或者是下级的类,不然就扫描不到了。

6、main方法是一个标准的Java程序的main方法,主要作用是作为项目启动运行的入口。

7、@Controller 及 @ResponseBody 依然是我们之前的Spring mvc,因为Spring boot的里面依然是使用我们的Spring mvc + Spring + MyBatis 等框架。

 

Spring boot 的核心配置文件

Spring boot的核心配置文件用于配置Spring boot程序,有两种格式的配置文件:

 1、.properties文件 application.properties 

两个都存在优先识别properties

#配置服务器端口
server.port=9800
#项目访问上下文 
server.servlet.context-path=/springboot-web

http://localhost:9800/springboot-web/boot/hello

 

2、.yml文件 application.yml

yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。

yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比 xml 简洁很多。

值与前面的冒号配置项必须要有一个空格。

yml 后缀也可以使用 yaml 后缀。

server:
  port: 9091
  servlet:
    context-path: /springboot-web #配置应用访问路径

 

3、多环境配置文件

有如下几个文件

application-dev.properties #比如配置测试环境

application-product.properties #比如配置生产环境

application.properties #激活的总文件,如果总文件也有相同配置以激活文件里配置优先。

#激活文件 约定成俗 application-dev.properties
spring.profiles.active=dev

 

Spring boot 自定义配置

1、@Value注解 自定义配置文件读取

application.properties

#配置服务器端口
server.port=9800
#项目访问上下文
server.servlet.context-path=/springboot-web
#自定义配置
boot.name=Goosander
boot.location=博客园
ConfigInfoController.java
package com.example.springbootweb.controller;

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

@Controller
public class ConfigInfoController {

    @Value("${boot.name}")
    private String name;

    @Value("${boot.location}")
    private String location;

    @RequestMapping("/boot/config")
    public @ResponseBody
    String configInfo() {
        String str = name + location;
        return str;
    }
}

访问http://localhost:9800/springboot-web/boot/config 显示Goosander博客园

!如果发现乱码,应该是编辑器GBK和srping boot 编码不一致导致,修改idea配置

2、@ConfigurationProperties 自定义配置文件映射

新建config文件用来放ConfigInfo.java

 1 package com.example.springbootweb.config;
 2 
 3 import org.springframework.boot.context.properties.ConfigurationProperties;
 4 import org.springframework.stereotype.Component;
 5 
 6 @Component //变成Spring的一个组件
 7 @ConfigurationProperties(prefix = "boot")
 8 public class ConfigInfo {
 9     private String name;
10     private String location;
11 
12     public String getName() {
13         return name;
14     }
15 
16     public void setName(String name) {
17         this.name = name;
18     }
19 
20     public String getLocation() {
21         return location;
22     }
23 
24     public void setLocation(String location) {
25         this.location = location;
26     }
27 }
@ConfigurationProperties 需要引用jar包
  <!--使用ConfigurationProperties-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
ConfigInfoController.java
 1 package com.example.springbootweb.controller;
 2 
 3 import com.example.springbootweb.config.ConfigInfo;
 4 import org.springframework.beans.factory.annotation.Autowired;
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.ResponseBody;
 8 
 9 @Controller
10 public class ConfigInfoController {
11 
12 
13     @Autowired //注入组件
14     private ConfigInfo configInfo;
15 
16 
17     @RequestMapping("/boot/config")
18     public @ResponseBody
19     String configInfo() {
20         String str = configInfo.getName() + configInfo.getLocation();
21         return str;
22     }
23 }

 

转载于:https://www.cnblogs.com/lilb/p/10245904.html

相关文章:

  • 计算机的门电路和加减乘除
  • WPF入门(四)-线形区域Path内容填充之渐变色(LinearGradientBrush)
  • flask请求流程
  • 浅谈贝叶斯公式
  • 第k个素数
  • 21纯 CSS 创作文本滑动特效的 UI 界面
  • canvas-画圆心的算法
  • [20190113]四校联考
  • 在哪个生命周期事件中,你会做出AJAX请求,为什么?
  • 前进的步伐,应该被记录
  • PIE SDK Command、Tool、Control的调用和拓展
  • 版本,认证,权限
  • 初学HTML-1
  • 实现复杂状态机的一种思路
  • 【安全测试自学】初探web安全处测试(二)
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CSS实用技巧
  • ES6语法详解(一)
  • Javascript编码规范
  • Java到底能干嘛?
  • Js基础——数据类型之Null和Undefined
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Otto开发初探——微服务依赖管理新利器
  • PAT A1120
  • python学习笔记-类对象的信息
  • React-生命周期杂记
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • SpingCloudBus整合RabbitMQ
  • 从伪并行的 Python 多线程说起
  • 计算机常识 - 收藏集 - 掘金
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 数据仓库的几种建模方法
  • 思否第一天
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一个项目push到多个远程Git仓库
  • 云大使推广中的常见热门问题
  • 湖北分布式智能数据采集方法有哪些?
  • ​iOS实时查看App运行日志
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • ###C语言程序设计-----C语言学习(3)#
  • (26)4.7 字符函数和字符串函数
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (黑马C++)L06 重载与继承
  • (四)模仿学习-完成后台管理页面查询
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原)Matlab的svmtrain和svmclassify
  • (转)iOS字体
  • .NET BackgroundWorker
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net IE10 _doPostBack 未定义
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 服务 ServiceController
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .net项目IIS、VS 附加进程调试