Springboot專案中需整合的依賴集和檔案配置
文章目錄
(一)springboot專案中需整合的依賴集
1. 整合Mysql資料庫的依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
2. 整合Mybatis的依賴
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
3. 整合druid資料庫的依賴
Druid的簡介:
Druid首先是一個資料庫連線池。Druid是目前最好的資料庫連線池,在功能、效能、擴充套件性方面,都超過其他資料庫連線池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應用,經過一年多生產環境大規模部署的嚴苛考驗。Druid是阿里巴巴開發的號稱為監控而生的資料庫連線池!
Druid的功能:
-
替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴充套件性好的資料庫連線池。
-
可以監控資料庫訪問效能,Druid內建提供了一個功能強大的StatFilter外掛,能夠詳細統計SQL的執行效能,這對於線上分析資料庫訪問效能有幫助。
-
資料庫密碼加密。直接把資料庫密碼寫在配置檔案中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支援PasswordCallback。
-
SQL執行日誌,Druid提供了不同的LogFilter,能夠支援Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的資料庫訪問情況。
-
擴充套件JDBC,如果你要對JDBC層有程式設計的需求,可以通過Druid提供的Filter機制,很方便編寫JDBC層的擴充套件外掛。
所以Druid可以:
1、充當資料庫連線池。
2、可以監控資料庫訪問效能
3、獲得SQL執行日誌
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
4. 整合lombok資料庫的依賴
lombok是一個可以通過簡單的註解的形式來幫助我們簡化消除一些必須有但顯得很臃腫的 Java 程式碼
註解種類:
@Setter
@Getter
@Data
@Log(這是一個泛型註解,具體有很多種形式)
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@NonNull
@Cleanup
@ToString
@RequiredArgsConstructor
@Value
@SneakyThrows
@Synchronized
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
5. 整合Shiro資料庫的依賴
shiro的簡介:
它是一個功能強大且易於使用的Java安全框架,可以執行身份驗證、授權、加密和會話管理。使用Shiro易於理解的API,您可以快速且輕鬆地保護任何應用程式——從最小的移動應用程式到最大的web和企業應用程式。
shiro的主要功能:
-
Authentication:身份認證
-
Authorization:許可權校驗
-
SessionManager:會話管理,使用者從登入到退出是一次會話,所有的資訊都儲存在會話中。普通的java se環境中也支援這種會話。
-
cryptography:資料加密,如對使用者密碼進行加密,避免將密碼明文存入資料庫中。
-
Web support:非常容易整合到web環境中。
-
Caching:快取,將使用者資訊和角色許可權等快取起來,不必每次去查
-
Concurrency:支援多執行緒,在一個執行緒中開啟新的執行緒,能把許可權傳過去。
-
Testing:提供測試功能
-
Run As:允許一個使用者假裝為另一個使用者的身份進行訪問。
-
Remember me: 記住使用者,一次登入後下次不用登入。
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.5.3</version>
</dependency>
6. 整合thymeleaf資料庫的依賴
thymeleaf的簡介:
Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 JSP 。相較與其他的模板引擎,它有如下三個極吸引人的特點:
thymeleaf的功能:
-
Thymeleaf 在有網路和無網路的環境下皆可執行,即它可以讓美工在瀏覽器檢視頁面的靜態效果,也可以讓程式設計師在伺服器檢視帶資料的動態頁面效果。這是由於它支援 html 原型,然後在 html 標籤裡增加額外的屬性來達到模板+資料的展示方式。瀏覽器解釋 html 時會忽略未定義的標籤屬性,所以 thymeleaf 的模板可以靜態地執行;當有資料返回到頁面時,Thymeleaf 標籤會動態地替換掉靜態內容,使頁面動態顯示。
-
Thymeleaf 開箱即用的特性。它提供標準和spring標準兩種方言,可以直接套用模板實現JSTL、 OGNL表示式效果,避免每天套模板、該jstl、改標籤的困擾。同時開發人員也可以擴充套件和建立自定義的方言。
-
Thymeleaf 提供spring標準方言和一個與 SpringMVC 完美整合的可選模組,可以快速的實現表單繫結、屬性編輯器、國際化等功能。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
7. 整合Shiro-thymeleaf的依賴
<dependency>
<groupId>com.github.theborakompanioni</groupId>
<artifactId>thymeleaf-extras-shiro</artifactId>
<version>2.0.0</version>
</dependency>
8. 整合devtools的依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
(二)Springboot專案需要的配置檔案Application.yml(Application.properties)
spring:
# 資料來源的配置
datasource:
username: root
password:
# 常規連線資料庫
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
# 使用 druid 資料庫連線池的方法
#?serverTimezone=UTC解決時區的報錯
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 預設是不注入這些屬性值的,需要自己繫結
#druid 資料來源專有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 模板引擎的相關配置
thymeleaf:
cache: false
suffix: .html
prefix: classpath:/templates/
mode: HTML
encoding: utf-8
servlet:
content-type: text/html
# 靜態資源的路徑
mvc:
static-path-pattern: /resources/**
resources:
static-locations: classpath:/resources/
# 檔案的上傳與下載配置
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MB
# Tomcat伺服器相關配置
server:
port: 8080
servlet:
context-path: /springboot
# mybatis的相關配置
mybatis:
configuration:
cache-enabled: true
type-aliases-package: top.linruchang.springbootdemo.domain
mapper-locations: classpath:/mapper/*Mapper.xml
lazy-initialization: true
(三)Shrio的配置檔案
package com.lianwei.config;
import com.lianwei.entity.User;
import com.lianwei.seivice.UserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 自定義的 UserRealm extends AuthorizingRealm:
*
* @Author: ghh
* @Date: 2020/10/24 14:41
*/
public class UserRealm extends AuthorizingRealm {
@Autowired
UserService userService;
// 授權
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("執行了 => doGetAuthorizationInfo");
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
// 拿到當前登入的這個物件
Subject subject = SecurityUtils.getSubject();
// 拿到User物件
User currentUser = (User) subject.getPrincipal();
// 設定當前使用者的許可權
System.out.println(currentUser.getName() + "的許可權為 " + currentUser.getPerms());
info.addStringPermission(currentUser.getPerms());
return info;
}
// 認證
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
System.out.println("執行了===>認證doGetAuthorizationInfo");
UsernamePasswordToken userToken = (UsernamePasswordToken) authenticationToken;
// 使用者名稱, 密碼, 從資料庫中讀取
User user = userService.queryUserByName(userToken.getUsername());
if (user == null) {
return null; // UnknownAccountException
}
Subject currentSubject = SecurityUtils.getSubject();
Session session = currentSubject.getSession();
session.setAttribute("loginUser",user.getName());
// 密碼認證,shiro自動認證
return new SimpleAuthenticationInfo(user, user.getPwd(),"");
}
}
shiro的授權認證:
package com.lianwei.config;
import com.lianwei.entity.User;
import com.lianwei.seivice.UserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 自定義的 UserRealm extends AuthorizingRealm:
*
* @Author: ghh
* @Date: 2020/10/24 14:41
*/
public class UserRealm extends AuthorizingRealm {
@Autowired
UserService userService;
// 授權
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("執行了 => doGetAuthorizationInfo");
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
// 拿到當前登入的這個物件
Subject subject = SecurityUtils.getSubject();
// 拿到User物件
User currentUser = (User) subject.getPrincipal();
// 設定當前使用者的許可權
System.out.println(currentUser.getName() + "的許可權為 " + currentUser.getPerms());
info.addStringPermission(currentUser.getPerms());
return info;
}
// 認證
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
System.out.println("執行了===>認證doGetAuthorizationInfo");
UsernamePasswordToken userToken = (UsernamePasswordToken) authenticationToken;
// 使用者名稱, 密碼, 從資料庫中讀取
User user = userService.queryUserByName(userToken.getUsername());
if (user == null) {
return null; // UnknownAccountException
}
Subject currentSubject = SecurityUtils.getSubject();
Session session = currentSubject.getSession();
session.setAttribute("loginUser",user.getName());
// 密碼認證,shiro自動認證
return new SimpleAuthenticationInfo(user, user.getPwd(),"");
}
}
相關文章
- SpringBoot專案中獲取配置檔案的配置資訊Spring Boot
- Springboot引入thymeleaf依賴,在pom檔案中報錯。Spring Boot
- Springboot專案依賴jar分離部署Spring BootJAR
- SpringBoot專案配置檔案中密碼的加密Spring Boot密碼加密
- SpringBoot專案配置檔案加密Spring Boot加密
- 【Springboot】在Idea的Maven專案匯入依賴Spring BootIdeaMaven
- 【SSM框架整合】專案xml檔案、properties等檔案的配置SSM框架XML
- 專案管理中,如何識別和管理依賴關係?專案管理
- 為什麼在SpringBoot+maven的專案中,所引入的依賴包可以不指定依賴的版本號?Spring BootMaven
- 搭建react專案常用依賴React
- springboot專案中yaml檔案Spring BootYAML
- 在iOS專案中依賴Flutter Module-②遠端依賴Git資源iOSFlutterGit
- JavaScript專案中鎖定npm依賴包版本JavaScriptNPM
- 分散式專案中,選型與依賴管理分散式
- 為你的專案依賴加星
- 一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置Spring Boot
- SpringBoot專案配置檔案佔位符Spring Boot
- SpringBoot 中獲取專案的路徑和檔案流Spring Boot
- IDEA中Maven顯示存在依賴但專案中並未匯入依賴JARIdeaMavenJAR
- Maven中如何管理多模組專案的依賴關係Maven
- 如何管理前端專案中的複雜依賴關係前端
- requirements.txt 檔案宣告依賴UIREM
- idea gradle 專案依賴IdeaGradle
- 使用godep管理Golang專案依賴Golang
- 使用govendor管理Golang專案依賴Golang
- IDEA Maven無法新增依賴到專案中IdeaMaven
- application.yml檔案配置springboot專案APPSpring Boot
- Android專案的依賴關係解析Android
- 什麼是專案管理中的任務依賴關係專案管理
- 在typescript專案中解決cycle依賴的一種方案TypeScript
- 如何使用Maven將專案中的依賴打進jar包MavenJAR
- Golang專案中讀取配置檔案Golang
- 快取依賴(檔案、資料庫)快取資料庫
- eclipse中maven專案不顯示Maven Dependencies依賴EclipseMaven
- springboot專案整合mybatisSpring BootMyBatis
- SpringBoot專案整合RabbitMQSpring BootMQ
- Oracle啟動後對控制檔案的依賴Oracle
- gradle構建springboot專案瘦身,外部依賴jar的終極方法GradleSpring BootJAR