์ž๋™ ๊ตฌ์„ฑ ์‚ฌ์šฉ ์ „ ์Šคํ”„๋ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

2023. 4. 28. 08:45ใ†์ธํ”„๋Ÿฐ/์Šคํ”„๋ง ๋ถ€ํŠธ - ํ•ต์‹ฌ ์›๋ฆฌ์™€ ํ™œ์šฉ

728x90

 

์Šคํ”„๋ง @Conditional (tistory.com)

 

์Šคํ”„๋ง @Conditional

0๏ธโƒฃ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ž๋™ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ธ๋ฐ ์ด ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์›น์œผ๋กœ ํ™•

hyejin.tistory.com

์ €๋ฒˆ ๊ธ€์—์„œ ๋งŒ๋“  ์‹ค์‹œ๊ฐ„ memory ์กฐํšŒ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋“ค์—์„œ๋„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ 

๋จผ์ € ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ž๋™ ๊ตฌ์„ฑ AutoConfiguration์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. 

 

๐Ÿ’Œ ์ฐธ๊ณ ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ํฌํ•จ๋˜์–ด ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์‹คํ–‰๋  ์ผ์ด ์—†์Œ) 

 

 

0๏ธโƒฃ ๋นŒ๋“œํ•˜๊ธฐ 

์ „์— ํ–ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ build ํ•œ๋‹ค.

gradlew clean build 

ํ•˜๊ณ  ๋‚˜๋ฉด build/libs/memory-v1.jar ์ด๋Ÿฐ์‹์œผ๋กœ jar ํŒŒ์ผ์ด ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค. 

 

 

1๏ธโƒฃ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ 

์ผ๋‹จ ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋‹ค. 

(๊ทธ๋ƒฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.) 

 

๋จผ์ € ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ด์„ ํด๋”๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ 

ํ”„๋กœ์ ํŠธ ๋ฐ‘์— ํด๋”ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. 

ex) project-v1/libs 

 

๊ทธ๋ฆฌ๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“  jar ํŒŒ์ผ์„ libs ํด๋” ์•ˆ์— ๋ณต์‚ฌํ•ด์ค€๋‹ค. 

 

๊ทธ ๋‹ค์Œ build.gradle์— memory-v1.jar๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 

dependencies {
    implementation files('/libs/memory-v1.jar') // ์ถ”๊ฐ€
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์œ„์™€ ๊ฐ™์ด ํŒŒ์ผ๋กœ ์ง์ ‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” implementation files๋กœ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

2๏ธโƒฃ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •ํ•˜๊ธฐ 

์ด์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

 

MemoryConfig

@Configuration
public class MemoryConfig
{
   @Bean
   public MemoryFinder memoryFinder()
   {
      return new MemoryFinder();
   }
   
   @Bean
   public MemoryController memoryController()
   {
      return new MemoryController(memoryFinder());
   }
}

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•„์š”ํ•œ ๋นˆ๋“ค์„ ๋“ฑ๋กํ•ด์ค˜์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜ํ•˜๋‚˜ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

์ด๋ ‡๊ฒŒ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ ๋‹ค์Œ์— ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ localhost:8080/memory ์‹คํ–‰ํ•ด๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์กฐํšŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž˜ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“š ์œ„์—์„œ ๋งŒ๋“  ์ˆœ์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด๋ถ€์— ์žˆ๋Š”  ๋นˆ ์ค‘์— ์–ด๋–ค ๊ฒƒ์„ ๋“ฑ๋กํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ณ , ๋˜ ๊ทธ๊ฑธ ํ•˜๋‚˜ํ•˜๋‚˜ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋ฌผ๋ก  ์ง€๊ธˆ์ด์•ผ 1~2๊ฐœ ์ •๋„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€ ์•Š์•˜๋Š”๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ๋˜๊ณ , ๋˜ ๊ทธ๊ฑธ ๋นˆ์œผ๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ๋“ฑ๋กํ•ด์ฃผ๋ ค๋ฉด ์ƒ๋‹นํžˆ ๊ท€์ฐฎ์€ ์ž‘์—…์ด ๋œ๋‹ค .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90