iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
Software Development

我在 Spring Boot 3 裡面挖呀挖呀挖系列 第 12

Day11 - Spring Boot該學到什麼樣的程度

  • 分享至 

  • xImage
  •  

Day11 - Spring Boot該學到什麼樣的程度

前言

我們花了很多時間講解自動配置原理,原因無它,就是讓我們更知道如何使用它如何修改它。當你想要Spring Boot幫你完成某些事情的時候你會怎麼做呢?

  1. 先來找找有沒有什麼懶人包
    • Spring initializer看官方有沒有已經整好的starter
    • maven repository找找有沒有xxx-spring-boot-starter
  2. 配置文件有哪些可改的預設值
  3. 能夠看的出來Starter註冊了哪寫組件,我們可以用那些組件。
  4. 當功能場景不合用,有能力修改配置,自定義組件。
    今天我們就來簡單使用Redis來看看我們是否有能力做到吧

redis準備

下載Redis
https://ithelp.ithome.com.tw/upload/images/20230927/20128084CYQbd7x3kn.png
解壓
https://ithelp.ithome.com.tw/upload/images/20230927/20128084WW0ZZmNC1h.png
啟動
https://ithelp.ithome.com.tw/upload/images/20230927/20128084Ih6b2VQKhH.png

專案創立

創建day11_redis module

https://ithelp.ithome.com.tw/upload/images/20230927/20128084vaJLeGgl85.png

spring initializer

選取場景web與redis
https://ithelp.ithome.com.tw/upload/images/20230927/20128084bvde0mNL65.png

查看autoconfigure

https://ithelp.ithome.com.tw/upload/images/20230927/201280848GoIxFzoZk.png
配置文件的修改是spring.data.redis開頭,預設是在localhost的6379 port
https://ithelp.ithome.com.tw/upload/images/20230927/20128084jSxd1ueDt1.png

分析組件

autoconfigure提供RedisTemplate、StringTemplate可供使用
https://ithelp.ithome.com.tw/upload/images/20230927/20128084PzKo6G2Mb1.png

創建controller調用組件使用@Autowired

@RestController
public class HelloController {

    @Autowired
    StringRedisTemplate stringRedisTemplate;

    @RequestMapping("/hello")
     public String hello(){
        //針對某個字串增加計數
        Long count=stringRedisTemplate.opsForValue().increment("hello");
        return "hello:"+count;
     }
}

啟動web專案

https://ithelp.ithome.com.tw/upload/images/20230927/20128084ofenfiBADr.png
執行redis-cli.exe,確認hello被寫入
https://ithelp.ithome.com.tw/upload/images/20230927/20128084m9CwGPFO8B.png

客製化組件

由於AutoConfiguration中StringTemplate上頭的@ConditionalOnMissingBean代表不存在該Bean時才向container,我們來測試看看自定義的方式建立RedisConfiguration

package com.swj.day11.controller.config;

//import略
@Configuration
public class RedisConfiguration {
    @Bean
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        System.out.println("這是客製化stringRedisTemplate");
        return new StringRedisTemplate(redisConnectionFactory);
    }
}

https://ithelp.ithome.com.tw/upload/images/20230927/20128084hYfB0E4vgC.png

Reference


上一篇
Day10 - 深入理解自動配置原理之@SpringApplcation
下一篇
Day12 - yaml配置文件用法
系列文
我在 Spring Boot 3 裡面挖呀挖呀挖31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言