Spring security實戰(2)-----搭建SpringBoot

     編寫Spring Boot啓動類

package com.rz;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/***
 * 啓動類
 */
@SpringBootApplication  //告訴程序是個spring boot項目
@RestController  //表示這是一個提供restful風格服務的類
public class DemoApplication {


    /***
     * spring標準啓動方式
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }

    @GetMapping("/hello")
    public String hello(){
        return "hello spring security";
    }
}

     這樣我們可以運行第一個SpringBoot項目了,但是還有一點小錯誤:

     可能出現的問題:
          Cannot determine embedded database driver class for database type NONE
     原因:maven依賴中添加了jdbc驅動,但是項目裏面沒有指定具體的數據庫連接
     解決方法:在resources目錄下新建application.yml文件,添加以下內容:

spring:
  datasource:
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    url: jdbc:mysql://192.168.0.137:3306/test_zq?useUnicode=true&characterEncoding=utf-8

     可能出現的問題:
          No Spring Session store is configured: set the ‘spring.session.store-type’ property
      原因:maven依賴中添加了spring-session的依賴,但是spring session的存儲沒有被配置
     解決方法:暫時在application.yml文件中關閉,添加以下內容:

spring:
  datasource:
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    url: jdbc:mysql://192.168.0.137:3306/test_zq?useUnicode=true&characterEncoding=utf-8
  session:
    store-type: none
server:
  port: 80

     現在項目可以進行訪問了,但是系統會默認彈出一個http basic的身份認證框,這是由於maven中依賴了Spring Security的jar包,默認是開啓身份認證的,有兩種方式可以解決:
1.在application.yml中添加配置:

security:
  basic:
    enabled: false

2.在每次項目啓動的時候,用戶名是user,系統會自動生成一個密碼,類似下面這樣的:

Using default security password: 86d43b9f-7926-43a3-bffa-6b238c54a65b

     項目打包:
          方式一:在idea的右側選擇Maven Projects,選擇父工程rz-security下的Lifecycle下的package命令。
             方式二:點擊右上角的點擊Edit Configurations…圖標,然後點擊“+”號,選中maven,選擇好項目路徑,在name中自定義命令名,在Command line填寫執行命令,完成即可運行。
             這兩者方式都會在每一個工程下下的target文件夾下生成一個jar包文件,但是這些jar包是不符合要求的,不能運行,我們這個工程是war包工程,這樣打包有許多依賴的jar包沒有打進來,我們需要的是一個可執行的jar包文件
     解決辦法:
          在rz-security-demo的pom.xml文件中添加插件,它會按照Springboot特有的方式進行打包會生成一個可執行jar包

<?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">
    <parent>
        <artifactId>rz-security</artifactId>
        <groupId>com.rz.security</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../rz-security/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>rz-security-demo</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.rz.security</groupId>
            <artifactId>rz-security-browser</artifactId>
            <version>${rz-security-version}</version>
        </dependency>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
      </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.7.0</version>
    </dependency>
    <!-- wiremock -->
    <dependency>
          <groupId>com.github.tomakehurst</groupId>
          <artifactId>wiremock</artifactId>
    </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.3.3.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <finalName>demo</finalName>
    </build>  <!--最終jar包名-->

</project>

     其實我們可以在命令行啓動可執行jar包:先進入jar包的所在目錄,然後輸入:

java -jar demo.jar

     這樣項目啓動 了,它和在idea中 main函數中啓動是一樣的
     說明:Springboot是不需要tomcat運行環境的,相反tomcat內嵌在可執行jar包裏面

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