【第一天】 SpringBoot自學之旅

SpringBoot之旅開啓

OneDay


簡言

springBoot剛開始接觸的第一印象是高大尚,爲什麼?接觸新技術嘛,自然會有那種高不可攀的感覺,當初學習spring整合的時候,各種繁瑣的配置文件,配置出錯,滿盤皆輸,畢竟和spring掛鉤,多多少少還有一些陰影存在,吐槽結束,迴歸正題!


前提概要

  • springboot啓動方式
  • springboot相關注解
  • springboot配置文件
  • springboot案例

初期

一、maven配置

  • spring-boot-starter-parent : springboot核心jar包
  • spring-boot-starter-web : springboot提供web支持
  • spring-boot-starter-test : springboot提供單元測試
  • spirng-boot-configuration-processor : springboot配置處理核心jar包
  • spring-boot-maven-plugin : springboot-maven插件

二、springboot啓動方式

  1. springboot程序編寫完成,在指定的main方法中,Run,默認端口號8080
  2. cmd操作,進入springboot工程目錄下(包含pom.xml文件的目錄),用maven指令打開,mvn spring-boot:run
  3. -java-jar方式打開 – 待更新

三、springboot相關注解

@Runwith : 測試運行器 -

可以指定相關的測試器進行單元測試。Ps:JUnit爲單元測試提供了一個默認的測試運行器BlockJUnit4ClassRunner,但是沒有限制必須使用默認的運行器。
— springRunner.Class指spring提供的Junit測試類。

@springBootTest :

對於springboot不同方式的請求測試,可以通過其註解進行單元測試,配合@Runwith註解。

@springBootApplication :

springboot程序啓動入口。springboot爲三大註解@Configuration,@EnableAutoConfiguration,@ComponentScan綜合的統一註解。等同於@SpringBootApplication
= (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。

@ConfigurationProperties(prefix=” “) :

初期的時候,我們將一些默認初始化的參數存放到springboot的配置文件中,進行初始化賦值並依次去調用,自然這樣的操作十分繁瑣,對於代碼的維護和更新十分不便,爲此springboot提供其註解,將默認參數映射到指定的實體類中,我們只需要調用其實體類,就可以對實體類中相關的變量進行操作,大大提高了代碼的維護型。

@Value(“${ }”) :

調用配置文件初始化賦值的變量


四、spirnboot配置文件

springboot配置文件專用的後綴名爲yml,其配置格式易簡約,具有觀賞性。當然第一天所學,
把用到的配置信息陳列一下:

application.yml

  • 指定訪問yml文件 - application-prod.yml

spring:
  profiles:
    active: prod

application-prod.yml

  • 可以在配置文件中,自定義初始化值
girl:
    cupsize: B
    girlname: xinyan
    age: 18

五、springBoot案例

工程目錄
這裏寫圖片描述


1. maven導入

介紹

 - springBoot 版本 1.5.6
 - spring-boot-starter-thymeleaf : 模版引擎核心架包
 - spring-boot-starter-data-jpa : springboot提供JPA的核心架包
 - spring-boot-starter-aop : springboot提供aop的核心架包
 - mysql-connector-java : mysql數據庫連接的核心架包
<?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>org.maven.springboot</groupId>
    <artifactId>springBootDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>1.5.6.RELEASE</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-maven-plugin -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>1.5.6.RELEASE</version>
            </plugin>
        </plugins>
    </build>
</project>

2. 導入

介紹

 - HellowController.java
 - C層的相關接口,對自定義變量,不同形式傳參進行測試
package org.maven.springboot.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class HellowController {

    @Autowired
    private org.maven.springboot.pojo.girlProperties girlProperties;

     /*----------------------------------- 自定義參數使用 -------------------------------------*/
//    @Value("${cupsize}")
//    private String cupSize;
//    @Value("${girlname}")
//    private String girlname;
//    @Value("${age}")
//    private int age;

    @RequestMapping(value = "hello",method = RequestMethod.GET)
    public String HelloSay(){
        return girlProperties.getCupsize();
    }

    /*----------------------------------- 兩種不同形式的傳參 -------------------------------------*/

    /**
     * PathVariable
     * @param id int
     * @return String
     */
    @RequestMapping(value = "say/{id}/hello",method = RequestMethod.GET)
    public int demoOne(@PathVariable Integer id){
        return id;
    }

    /**
     * RequestParam
     *   required : 是否需要傳參
     *   defaultValue : 參數默認值
     * @param id int
     * @return String
     */
    @RequestMapping(value = "say/hello",method = RequestMethod.GET)
    public String demoTwo(@RequestParam(value = "id",required = false,defaultValue = "0") Integer id){
        return girlProperties.getGirlname();
    }
}

3.GirlApplication.java

介紹

 - GirlApplication.java
 - springboot啓動入口
package org.maven.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class GirlApplication {

    public static void main(String[] args){
        SpringApplication.run(GirlApplication.class,args);
    }
}

4.實體類girlProperties

介紹
@Component 依賴注入
@ConfigurationProperties(prefix = “girl”) 方便操作實體類中的相關變量

package org.maven.springboot.pojo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "girl")
public class girlProperties {
    private String cupsize;
    private String girlname;
    private int age;

    public String getCupsize() {
        return cupsize;
    }

    public void setCupsize(String cupsize) {
        this.cupsize = cupsize;
    }

    public String getGirlname() {
        return girlname;
    }

    public void setGirlname(String girlname) {
        this.girlname = girlname;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

5.yml配置文件

介紹

1.application.yml

spring:
  profiles:
    active: prod

2.application-prod.yml

server:
  port: 8081
  context-path: /demo
girl:
  cupsize: F
  girlname: xinyan
  age: 18

以上實例爲springboot的入門級demo,默認端口+地址:localhost:8081/demo/{自定義url接口},後續會更新springboot + mysql + JPA 的 相關文章….. 上傳的工程目錄,有些沒有涉及到的是後續文章中,JPA實現數據庫操作,及AOP的探索。學習之路,互利共勉,Boot小白有不足之處,希望大家多多指出,一起學習!

未完待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章