๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์š”์ฆ˜IT์ด์Šˆ

[๊ฐœ๋ฐœ์ผ์ง€] Spring Boot ์„ธ์…˜ ๋ฌธ์ œ ํ•ด๊ฒฐ๊ธฐ: "์™œ ์ž๊พธ ๋กœ๊ทธ์ธ์ด ํ’€๋ฆฌ์ง€?" ๊ฐ์ฒด๋ฅผ ์„ธ์…˜์— ์ €์žฅํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

by chuyj15 2025. 7. 22.
728x90
๋ฐ˜์‘ํ˜•
SMALL

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ

์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ Spring Boot ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์ค‘ ๊ฒช์—ˆ๋˜ ์„ธ์…˜ ๊ด€๋ จ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๊ณผ์ •์„ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ ๋ฒˆ์ฏค ๊ฒช์–ด๋ดค์„ ๋ฌธ์ œ์ผ ํ…๋ฐ์š”, "์ฝ”๋“œ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ์ธ์ด ํ’€๋ ค์„œ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜๋Š” ๊ทธ๋ฌธ์ œ" 


๐Ÿšจ ๋ฌธ์ œ ๋ฐœ์ƒ: "๋˜ ๋กœ๊ทธ์ธ์ด ํ’€๋ ธ๋„ค?"

์ƒํ™ฉ

Spring Boot + Thymeleaf๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค:

1. ๋กœ๊ทธ์ธ ์™„๋ฃŒ โœ…
2. ๊ฐœ๋ฐœ ์ž‘์—… ์ค‘... ๐Ÿ’ป
3. ์ฝ”๋“œ ์ˆ˜์ • ํ›„ ์ €์žฅ ๐Ÿ“
4. DevTools๊ฐ€ ์ž๋™์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์žฌ์‹œ์ž‘ ๐Ÿ”„
5. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ๐ŸŒ
6. "๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค" ์—๋Ÿฌ + ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๐Ÿ˜ฑ

์–ผ๋งˆ๋‚˜ ๊ท€์ฐฎ์•˜๋ƒ๋ฉด...

  • ํ•˜๋ฃจ์— ๋ช‡์‹ญ ๋ฒˆ์”ฉ ๋‹ค์‹œ ๋กœ๊ทธ์ธ ๐Ÿ˜ญ
  • ๊ฐœ๋ฐœ ํ๋ฆ„์ด ๊ณ„์† ๋Š์–ด์ง
  • ์ง‘์ค‘๋ ฅ ์ €ํ•˜๋กœ ์ƒ์‚ฐ์„ฑ ๊ธ‰๊ฐ

ํŠนํžˆ ๊ถŒํ•œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ๊ถŒํ•œ๋ณ„๋กœ ๋‹ค๋ฅธ ํ™”๋ฉด์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๋งค๋ฒˆ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ ์ •๋ง ์ŠคํŠธ๋ ˆ์Šค์˜€์–ด์š”!


๐Ÿ” ์›์ธ ํƒ๊ตฌ: "๋ญ”๊ฐ€ ์ด์ƒํ•œ๋ฐ?"

์ด์ƒํ•œ ๊ฑด ์„ธ์…˜์—์„œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ์ ์ด์—ˆ์–ด์š”:

// ์„ธ์…˜ ํ™•์ธ ๊ฒฐ๊ณผ
session.getAttribute("accessToken")           // โœ… ์žˆ์Œ
session.getAttribute("isMasterPrivilege")     // โœ… ์žˆ์Œ  
session.getAttribute("pageAccessRightSettings") // โŒ ์—†์Œ!!

"๋ญ์ง€? ์™œ ์ผ๋ถ€๋งŒ ์‚ฌ๋ผ์ง€์ง€?" ๐Ÿค”


๐Ÿง ๋ฒ”์ธ์„ ์ฐพ์•„๋ผ: Serializable์˜ ๋ฐฐ์‹ 

๊ฐ€์„ค ์„ค์ •

์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ๊ฑด ์ง๋ ฌํ™”(Serialization) ๋ฌธ์ œ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ™•์ธ

// String ํƒ€์ž…๋“ค (๊ธฐ๋ณธ ์ง๋ ฌํ™” ๊ฐ€๋Šฅ)
String accessToken = "JWTํ† ํฐ";           // โœ… 
String isMasterPrivilege = "1";           // โœ…

// ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด (์˜์‹ฌ์Šค๋Ÿฌ์šด ๋…€์„)
PageAccessRightSettings pageSettings = new PageAccessRightSettings(); // โŒ?

๋ฒ”์ธ ๋ฐœ๊ฒฌ!

PageAccessRightSettings ํด๋ž˜์Šค๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ:

@Data
public class PageAccessRightSettings {
    // โŒ Serializable ๊ตฌํ˜„ ์•ˆ๋จ!
    private String monitoringPage;
    private String userManagementPage;
    private String deviceManagementPage;
    // ...
}

๋ฐ”๋กœ ์ด๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค! ๐Ÿ’ก

์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋‚˜?

  1. Spring DevTools ์žฌ์‹œ์ž‘ → ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ ์ƒˆ๋กœ ์ƒ์„ฑ
  2. ์„ธ์…˜ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ์‹œ๋„ → String์€ ์„ฑ๊ณต, ์‚ฌ์šฉ์ž ๊ฐ์ฒด๋Š” ์‹คํŒจ
  3. ์ง๋ ฌํ™” ์‹คํŒจํ•œ ๊ฐ์ฒด๋งŒ ์„ธ์…˜์—์„œ ์ œ๊ฑฐ
  4. ๊ถŒํ•œ ์ฒดํฌ ์‹œ pageAccessRightSettings ์—†์Œ → ์ธ์ฆ ์‹คํŒจ

๐Ÿ› ๏ธ ํ•ด๊ฒฐ ๊ณผ์ •: "์ด๋ ‡๊ฒŒ ํ•ด๋ณด์ž!"

ํ•ด๊ฒฐ์ฑ… : Serializable ๊ตฌํ˜„ โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ

@Data
public class PageAccessRightSettings implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private String monitoringPage;
    private String userManagementPage;
    private String deviceManagementPage;
    private String userSendPage;
    private String accessHistoryPage;
    private String schedulePage;
    private String groupManagementPage;
    private String clientSettingPage;
}

 


๐ŸŽฏ ์ตœ์ข… ํ•ด๊ฒฐ: "๋“œ๋””์–ด ํ‰ํ™”๊ฐ€ ์™”๋‹ค!"

์ ์šฉ ๊ฒฐ๊ณผ

  1. Serializable ๊ตฌํ˜„ → ์„ธ์…˜์—์„œ ๊ถŒํ•œ ์ •๋ณด ์‚ฌ๋ผ์ง€์ง€ ์•Š์Œ โœ…

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

โœ… ์ฝ”๋“œ ์ˆ˜์ • ํ›„ ์ €์žฅ
โœ… DevTools ์ž๋™ ์žฌ์‹œ์ž‘  
โœ… ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ๊ณ ์นจ
โœ… ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€! (๊ถŒํ•œ ์ •๋ณด ํฌํ•จ)
โœ… ๊ฐœ๋ฐœ ์ž‘์—… ๊ณ„์† ์ง„ํ–‰ ๊ฐ€๋Šฅ!

์„ฑ๋Šฅ ํ–ฅ์ƒ

  • ๋กœ๊ทธ์ธ ํšŸ์ˆ˜: ํ•˜๋ฃจ 30ํšŒ → 1ํšŒ ๐Ÿ˜Ž
  • ๊ฐœ๋ฐœ ์ง‘์ค‘๋„: ๋Œ€ํญ ํ–ฅ์ƒ ๐Ÿ“ˆ
  • ์ŠคํŠธ๋ ˆ์Šค ์ง€์ˆ˜: ๊ธ‰๊ฐ ๐Ÿ˜Œ

๐Ÿ’ก ๋ฐฐ์šด ์ ๋“ค

1. Java ์ง๋ ฌํ™”์˜ ์ค‘์š”์„ฑ

// ์„ธ์…˜์— ์ €์žฅํ•  ๊ฐ์ฒด๋Š” ๋ฐ˜๋“œ์‹œ Serializable ๊ตฌํ˜„!
public class MyData implements Serializable {
    private static final long serialVersionUID = 1L;
    // ...
}

 

 

 

๐ŸŽ‰ ๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด์„œ "์ž‘์€ ๊ฒƒ์ด ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ ๋‹ค"๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.

implements Serializable ํ•œ ์ค„ ์ถ”๊ฐ€๋กœ:

  • ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ ๋Œ€ํญ ํ–ฅ์ƒ ๐Ÿ“ˆ
  • ์ŠคํŠธ๋ ˆ์Šค ํ•ด์†Œ ๐Ÿ˜Œ
  • ์ƒˆ๋กœ์šด ์ง€์‹ ์Šต๋“ ๐Ÿง 

๊ฐœ๋ฐœ์ž ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ๋“œ๋ฆฌ๋Š” ํŒ ๐Ÿ’ฌ

  1. ์„ธ์…˜์— ์ €์žฅํ•  ๊ฐ์ฒด๋Š” ๊ผญ Serializable ๊ตฌํ˜„ํ•˜์„ธ์š”!
  2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์ž‘์€ ๋ถˆํŽธํ•จ๋„ ๋ฌด์‹œํ•˜์ง€ ๋งˆ์„ธ์š”
  3. ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •์—์„œ ๊ทผ๋ณธ ์›์ธ์„ ์ฐพ๋Š” ์Šต๊ด€์„ ๊ธฐ๋ฅด์„ธ์š”

ํ˜น์‹œ ๋น„์Šทํ•œ ๋ฌธ์ œ๋กœ ๊ณ ์ƒํ•˜๊ณ  ๊ณ„์‹  ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค!

์งˆ๋ฌธ์ด๋‚˜ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ์‹œ๋ฉด ๋Œ“๊ธ€๋กœ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”~ ๐Ÿ™Œ

 

#Spring Boot #์„ธ์…˜๊ด€๋ฆฌ #DevTools #Serializable #๊ฐœ๋ฐœ์ผ์ง€ #๋ฌธ์ œํ•ด๊ฒฐ #Java #๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ

728x90
๋ฐ˜์‘ํ˜•
LIST