1. 程式人生 > >基於spring boot和mongodb打造一套完整的許可權架構(二)【MAVEN依賴以及相應配置】

基於spring boot和mongodb打造一套完整的許可權架構(二)【MAVEN依賴以及相應配置】

       在上一章我們已經新建好整個專案了,在本章我們將講解我們的這套許可權架構所需要的maven依賴以及相關的配置,大家開啟我們的pom.xml增加完maven依賴以後的配置檔案如下:

<?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.mongo</groupId>
	<artifactId>csdn</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>csdn</name>
	<description>基於mongodb開發的使用者許可權架構</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.1.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>
		<org.mapstruct.version>1.1.0.Final</org.mapstruct.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
		</dependency>

		<dependency>
			<groupId>com.spring4all</groupId>
			<artifactId>mongodb-plus-spring-boot-starter</artifactId>
			<version>1.0.0.RELEASE</version>
		</dependency>


		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.6.1</version>
		</dependency>

		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.6.1</version>
		</dependency>

		<!-- 開啟spring-security的支援 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<!-- 開啟thymeleaf的spring-security的支援 -->
		<dependency>
			<groupId>org.thymeleaf.extras</groupId>
			<artifactId>thymeleaf-extras-springsecurity4</artifactId>
		</dependency>

		<!-- 表示對thymeleaf模板不再是用預設的HTML5標準來做嚴格限制 -->
		<dependency>
			<groupId>net.sourceforge.nekohtml</groupId>
			<artifactId>nekohtml</artifactId>
			<version>1.9.22</version>
		</dependency>

		<!-- 新增對thymeleaf的支援 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional><!-- optional=true,依賴不會傳遞,該專案依賴devtools;之後依賴myboot專案的專案如果想要使用devtools,需要重新引入 -->
		</dependency>

		<!-- 引入json的依賴 classifier必須要加這個是json的jdk的依賴-->
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.4</version>
			<classifier>jdk15</classifier>
		</dependency>


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

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- 增加mapstruct自動編譯實現生成impkl檔案 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<annotationProcessorPaths>
						<path>
							<groupId>org.mapstruct</groupId>
							<artifactId>mapstruct-processor</artifactId>
							<version>${org.mapstruct.version}</version>
						</path>
					</annotationProcessorPaths>
				</configuration>
			</plugin>
		</plugins>
	</build>


</project>

       1、在resource目錄底下建立一個application-dev.properties配置檔案,同時開啟該配置檔案增加mongodb資料庫配置如下:

spring.data.mongodb.database=test
spring.data.mongodb.host=192.168.44.128
spring.data.mongodb.port=27017
spring.data.mongodb.username=csdn
spring.data.mongodb.password=csdn123

# 最小連線數
spring.data.mongodb.option.min-connection-per-host=10
# 最大連線數
spring.data.mongodb.option.max-connection-per-host=200
spring.data.mongodb.option.threads-allowed-to-block-for-connection-multiplier=5
spring.data.mongodb.option.server-selection-timeout=30000
spring.data.mongodb.option.max-wait-time=120000
spring.data.mongodb.option.max-connection-idle-time=0
spring.data.mongodb.option.max-connection-life-time=0
spring.data.mongodb.option.connect-timeout=10000
spring.data.mongodb.option.socket-timeout=0

spring.data.mongodb.option.socket-keep-alive=false
spring.data.mongodb.option.ssl-enabled=false
spring.data.mongodb.option.ssl-invalid-host-name-allowed=false
spring.data.mongodb.option.always-use-m-beans=false

spring.data.mongodb.option.heartbeat-socket-timeout=20000
spring.data.mongodb.option.heartbeat-connect-timeout=20000
spring.data.mongodb.option.min-heartbeat-frequency=500
spring.data.mongodb.option.heartbeat-frequency=10000
spring.data.mongodb.option.local-threshold=15

      2、接著在application.properties配置檔案中增加以下配置:

spring.profiles.active=dev

#配置放行的目錄和方法
security.ignored=/api/*,/css/*,/js/*,/images/*,/fonts/*,/font-awesome/*
#表示對thymeleaf模板不再是用預設的HTML5標準來做嚴格限制
spring.thymeleaf.mode = LEGACYHTML5

     3、 在我們的主入口類CsdnApplication 上增加@EnableMongoPlus註解如下所示:

@SpringBootApplication
@EnableMongoPlus
public class CsdnApplication {

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

      4、增加日誌檔案記錄功能我們需要在resource目錄底下建立logback-spring.xml檔案用來記錄我們的mongodb執行的nosql語句的資訊,以及相應的日誌,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <!--輸出到控制檯-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--按天生成日誌-->
    <appender name="logFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>
                applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
            </FileNamePattern>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} -%msg%n
            </Pattern>
        </layout>
    </appender>

    <!-- 需要掃描日誌的包 -->
    <logger name="org.springframework.data.mongodb.core" level="DEBUG" additivity="false">
        <!-- 日誌會載入到控制檯 -->
        <appender-ref ref="console"/>
        <!-- 日誌會載入到日誌檔案中 -->
        <appender-ref ref="logFile" />
    </logger>

    <!-- 將所有的錯誤資訊儲存到日誌檔案中 -->
    <root level="ERROR">
        <appender-ref ref="logFile" />
        <appender-ref ref="logFile" />
    </root>


</configuration>

      到此我們已經完成了整個許可權架構的maven依賴的引入、mongodb資料庫的連線池的配置、mongodb日誌記錄以及spring security放行目錄的配置,下一章我們將開始整合swagger2、以及我們的基礎開發工具類。

QQ交流群:578746866