1. 程式人生 > >SpringBoot整合SSM

SpringBoot整合SSM

SpringBoot整合SSM

請檢視部落格SpringBoot介紹與使用瞭解Spring基本介紹與使用

如何使用springboot來整合SSM

1.0 使用lombok

我們編寫pojo時,經常需要編寫建構函式和getter、setter方法,屬性多的時候,就非常浪費時間,使用lombok外掛可以解決這個問題:

在idea中安裝lombok外掛:

需要在maven中引入依賴:

<dependency>
    <groupId>org.project.lombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

然後可以在Bean上使用:

@Data :自動提供getter 和setter 、hashCode、 equals、toString等方法
@Getter :自動提供getter方法
@Setter: 自動提供setter方法
@Slf4j:自動在bean中提供log變數,其實用的是slf4j的日誌功能

2.1.整合SpringMVC

雖然預設配置已經可以使用SpringMVC了,不過我們有時候需要進行自定義配置。

日誌級別控制:

logging:
  level:
    com.jim: debug
    org.springfreamework: debug

2.1.1.修改埠

檢視SpringBoot的全域性屬性可知,埠通過以下方式配置:

# 對映埠
server.port=80

重啟服務後測試:

2.1.2.訪問靜態資源

現在,我們的專案是一個jar工程,那麼就沒有webapp,我們的靜態資源該放哪裡呢?

回顧我們上面看的原始碼,有一個叫做ResourceProperties的類,裡面就定義了靜態資源的預設查詢路徑:

預設的靜態資源路徑為:

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public

只要靜態資源放在這些目錄中任何一個,SpringMVC都會幫我們處理。

我們習慣會把靜態資源放在classpath:/static/

目錄下。我們建立目錄,並且新增一些靜態資源:

重啟專案後測試:

2.1.3.新增攔截器

攔截器也是我們經常需要使用的,在SpringBoot中該如何配置呢?

攔截器不是一個普通屬性,而是一個類,所以就要用到java配置方式了。在SpringBoot官方文件中有這麼一段說明:

If you want to keep Spring Boot MVC features and you want to add additional MVC configuration (interceptors, formatters, view controllers, and other features), you can add your own @Configuration class of type WebMvcConfigurer but without @EnableWebMvc. If you wish to provide custom instances of RequestMappingHandlerMapping, RequestMappingHandlerAdapter, or ExceptionHandlerExceptionResolver, you can declare a WebMvcRegistrationsAdapter instance to provide such components.

If you want to take complete control of Spring MVC, you can add your own @Configuration annotated with @EnableWebMvc.

翻譯:

如果你想要保持Spring Boot 的一些預設MVC特徵,同時又想自定義一些MVC配置(包括:攔截器,格式化器, 檢視控制器、訊息轉換器 等等),你應該讓一個類實現WebMvcConfigurer,並且新增@Configuration註解,但是千萬不要加@EnableWebMvc註解。如果你想要自定義HandlerMappingHandlerAdapterExceptionResolver等元件,你可以建立一個WebMvcRegistrationsAdapter例項 來提供以上元件。

如果你想要完全自定義SpringMVC,不保留SpringBoot提供的一切特徵,你可以自己定義類並且新增@Configuration註解和@EnableWebMvc註解

總結:通過實現WebMvcConfigurer並新增@Configuration註解來實現自定義部分SpringMvc配置。

首先我們定義一個攔截器:

public class LoginInterceptor implements HandlerInterceptor {

    private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        logger.debug("preHandle method is now running!");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
        logger.debug("postHandle method is now running!");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        logger.debug("afterCompletion method is now running!");
    }
}

然後,我們定義配置類,註冊攔截器:

@Configuration
public class MvcConfig implements WebMvcConfigurer{
    /**
     * 通過@Bean註解,將我們定義的攔截器註冊到Spring容器
     * @return
     */
    @Bean
    public LoginInterceptor loginInterceptor(){
        return new LoginInterceptor();
    }

    /**
     * 重寫介面中的addInterceptors方法,新增自定義攔截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 通過registry來註冊攔截器,通過addPathPatterns來新增攔截路徑
        registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**");
    }
}

結構如下:

接下來執行並檢視日誌:

你會發現日誌中什麼都沒有,因為我們記錄的log級別是debug,預設是顯示info以上,我們需要進行配置。

SpringBoot通過logging.level.*=debug來配置日誌級別,*填寫包名

# 設定com.leyou包的日誌級別為debug
logging.level.com.leyou=debug

再次執行檢視:

2018-05-05 17:50:01.811 DEBUG 4548 --- [p-nio-80-exec-1] com.leyou.interceptor.LoginInterceptor   : preHandle method is now running!
2018-05-05 17:50:01.854 DEBUG 4548 --- [p-nio-80-exec-1] com.leyou.interceptor.LoginInterceptor   : postHandle method is now running!
2018-05-05 17:50:01.854 DEBUG 4548 --- [p-nio-80-exec-1] com.leyou.interceptor.LoginInterceptor   : afterCompletion method is now running!

3.整合jdbc和事務

spring中的jdbc連線和事務是配置中的重要一環,在SpringBoot中該如何處理呢?

答案是不需要處理,我們只要找到SpringBoot提供的啟動器即可:

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

當然,不要忘了資料庫驅動,SpringBoot並不知道我們用的什麼資料庫,這裡我們選擇MySQL:

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

至於事務,SpringBoot中通過註解來控制。就是我們熟知的@Transactional

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public User queryById(Long id){
        return this.userMapper.selectByPrimaryKey(id);
    }

    @Transactional
    public void deleteById(Long id){
        this.userMapper.deleteByPrimaryKey(id);
    }
}

4.整合連線池

其實,在剛才引入jdbc啟動器的時候,SpringBoot已經自動幫我們引入了一個連線池:

HikariCP應該是目前速度最快的連線池了,我們看看它與c3p0的對比:

因此,我們只需要指定連線池引數即可:

# 連線四大引數
spring.datasource.url=jdbc:mysql://localhost:3306/heima
spring.datasource.username=root
spring.datasource.password=123
# 可省略,SpringBoot自動推斷
spring.datasource.driverClassName=com.mysql.jdbc.Driver

spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.minimum-idle=10

當然,如果你更喜歡Druid連線池,也可以使用Druid官方提供的啟動器:

<!-- Druid連線池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.6</version>
</dependency>

而連線資訊的配置與上面是類似的,只不過在連線池特有屬性上,方式略有不同:

#初始化連線數
spring.datasource.druid.initial-size=1
#最小空閒連線
spring.datasource.druid.min-idle=1
#最大活動連線
spring.datasource.druid.max-active=20
#獲取連線時測試是否可用
spring.datasource.druid.test-on-borrow=true
#監控頁面啟動
spring.datasource.druid.stat-view-servlet.allow=true

5.整合mybatis

5.1.mybatis

SpringBoot官方並沒有提供Mybatis的啟動器,不過Mybatis官網自己實現了:

<!--mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

配置,基本沒有需要配置的:

# mybatis 別名掃描
mybatis.type-aliases-package=com.heima.pojo
# mapper.xml檔案位置,如果沒有對映檔案,請註釋掉
mybatis.mapper-locations=classpath:mappers/*.xml

需要注意,這裡沒有配置mapper介面掃描包,因此我們需要給每一個Mapper介面新增@Mapper註解,才能被識別。

@Mapper
public interface UserMapper {
}

5.2.通用mapper

通用Mapper的作者也為自己的外掛編寫了啟動器,我們直接引入即可:

<!-- 通用mapper -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>

注意:一旦引入通用Mapper的啟動器,會覆蓋Mybatis官方啟動器的功能,因此需要移除對官方Mybatis啟動器的依賴。

無需任何配置就可以使用了。如果有特殊需要,可以到通過mapper官網檢視。

public interface UserMapper extends Mapper<User>{
}

另外,我們需要把啟動類上的@MapperScan註解修改為通用mapper中自帶的:

而且需要對pojo類進行添加註解:

注意:如果對應的屬性在mysql的表中沒有對應列,則對該屬性添加註解@Transient

6.啟動測試

將controller進行簡單改造:

@RestController
public class HelloController {

    @Autowired
    private UserService userService;

    @GetMapping("/hello")
    public User hello() {
        User user = this.userService.queryById(8L);
        return user;
    }
}

我們啟動專案,檢視:

相關推薦

SpringBoot整合SSM之日期類型轉換

private pat .data abi port write cep ner void 這裏我用的是一個工具類: package cn.leon.util; import com.fasterxml.jackson.core.JsonGenerator; impor

使用SpringBoot整合ssm專案

SpringBoot是什麼?   Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。 Spring Boot 現在已經成為Java 開發領域的一顆璀璨明珠,它本身是包容永珍的,可以跟各種技術整合。成為SpringBoot全家桶,成為一

springboot整合ssm詳細講解

SSM是企業中廣泛應用的框架。大家再熟練地使用SSM進行業務邏輯開發的時候,也被它大量的xml配置困擾。今 天快速優雅的使用SpringBoot實現簡易的SSM工程。廢話不多說,come on 開發工具idea 1.建立一個web工程,pom.xml中加入如下配置:   &

springboot整合ssm框架,並整合swagger介面管理和通用的mapper

一直就有想將學習到的東西寫下來的想法,可是一直沒實施,以前覺得沒什麼,近期來才發現這是一很嚴重的問題,因為有時你不把學會的東西記下來,那麼只要一段時間不去應用它,那麼就會慢慢遺忘,所以現在就讓我真正踏出學習的第一步吧。由於是很粗燥的一次整合,有許多不足之處,請大家見諒,同時也請大家多多評價,提意見,

idea工具用springboot整合ssm工程(maven)

  這兩天在研究springboot整合ssm工程,下面小編簡單總結一下。          專案結構:                    首先,idea開發工具已經集成了springboot,所以我們利用這點優勢能夠迅速的搭建一個springboot的ssm工程。一、先

SpringBoot整合SSM

SpringBoot整合SSM 請檢視部落格SpringBoot介紹與使用瞭解Spring基本介紹與使用 如何使用springboot來整合SSM 1.0 使用lombok 我們編寫pojo時,經常需要編寫建構函式和getter、setter方法,屬性多的時候,就非常浪費時間,使用lombok外掛可以解決這個

springboot整合mybatis(SSM開發環境搭建)

add bug fin () 3.0 config autoconf tro mysql 0.項目結構: 1.application.properties中配置整合mybatis的配置文件、mybatis掃描別名的基本包與數據源 server.po

springboot --- 之SSM框架整合

aso character org default ica row ffi order ont 1.pom依賴: 即:spring-boot的基本jar ---- 內置springmvc和spring Thymeleaf jar 熱部署 jar ---方便二次加載 ct

SpringBoot框架搭建系列(一):整合SSM

本次我們使用的是IDEA來建立SpringBoot專案,來整合SSM框架 1、建立maven專案 2、選擇依賴 3、最終的pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmln

SpringBoot 熱部署整合 ssm +poi+druid pom依賴

<name>name</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springfra

SpringBoot實踐-整合SSM

需求:實現一個使用者管理系統,對使用者進行CRUD操作 前端:easyUI 後端:SpringBoot+ssm+通用Mapper+druid+mysql 接下來,我們來看看如何用SpringBoot來玩轉以前的SSM,我們用到的資料庫tb_user和實體類User如下:

SpringBoot整合SSM框架

學習Spring Boot框架,想必已經感受到該框架帶來的快感,接下來教你如何快速搭建Spring、SpringMvc、Mybatis框架整合。 1.專案構建 2.sql檔案 /* MySQL Backup Source Server Versio

SpringBoot框架整合SSM實現簡單資料庫增刪改查

首先建立一個Maven工程 第一步:選擇Maven專案建立結構 第二步:配置專案屬性 點選finish即可完成建立 再來看一下專案的目錄 然後配置pom.xml依賴檔案  <?xml version="1.0" encoding="U

淺談Mybatis持久化框架在Spring、SSMSpringBoot整合的演進及簡化過程

# 前言 最近開始了SpringBoot相關知識的學習,作為為目前比較流行、用的比較廣的Spring框架,是每一個Java學習者及從業者都會接觸到一個知識點。作為Spring框架專案,肯定少不了與資料庫持久層的整合。我們在學習Java初始就被灌輸SSM框架(Spring、SpringMVC、Mybatis)

Springboot整合redisCluster集群

.cn 數據 blog 3-9 pom.xml 整合 img 技術 相關 1.pom.xml增加redis支持 2.配置增加redis相關 3.RedisProperties.class讀取配置中的值 4.JedisClusterConfig.class 5.RedisCl

springboot整合mybatis,freemarker

ons ren mac har rom cee www -name prefix springboot 整合mybaits,,freemarker pom.xml文件 <?xml version="1.0" encoding="UTF-8"?><pr

springboot整合activemq小demo

ble boolean onf del pen local pro imp clas 直接上幹貨。。。 1、首先配置pom.xml文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h

SpringBoot(十四):springboot整合shiro-登錄認證和權限管理

sets man throws 將不 匹配 跳轉 ida 管理員 領域 原文出處: 純潔的微笑 這篇文章我們來學習如何使用Spring Boot集成Apache Shiro。安全應該是互聯網公司的一道生命線,幾乎任何的公司都會涉及到這方面的需求。在Java領域一般有Spri

springboot整合mybatis及封裝curd操作-配置文件

enabled () init tps github mys tde oos maven 1 配置文件 application.properties #server server.port=8090 server.address=127.0.0.1 server.ses

SpringBoot 2.SpringBoot整合Mybatis

string map res iba tis com roo batis 哈哈哈 一、創建Springboot的配置文件:application.properties SpringApplication 會從 application.properties 文件中加載配置信