From 0ba7b98ef0c94d1478cdd5b0643dab4974a7c538 Mon Sep 17 00:00:00 2001 From: dayaelee Date: Sat, 3 Aug 2024 21:15:53 +0900 Subject: [PATCH 01/16] =?UTF-8?q?[8=EC=9B=94=201=EC=9D=BC=20=EC=88=99?= =?UTF-8?q?=EC=A0=9C]spring-mvc-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cholog/MemberController.java | 23 +++++++++++++++---- .../resources/static/{hi.html => index.html} | 0 .../{templates => static}/static.html | 0 3 files changed, 19 insertions(+), 4 deletions(-) rename spring-mvc-1/initial/src/main/resources/static/{hi.html => index.html} (100%) rename spring-mvc-1/initial/src/main/resources/{templates => static}/static.html (100%) diff --git a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java index 08322a4e..3a12f651 100644 --- a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java +++ b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java @@ -1,18 +1,33 @@ package cholog; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; @Controller public class MemberController { - - public String world() { + @GetMapping("/hello") + public String world(@RequestParam(name = "name", required = false) String name, Model model) { // TODO: /hello 요청 시 resources/templates/static.html 페이지가 응답할 수 있도록 설정하세요. // TODO: 쿼리 파라미터로 name 요청이 들어왔을 때 해당 값을 hello.html에서 사용할 수 있도록 하세요. - return null; + if (name == null){ + // 쿼리 파라미터가 없는 경우 + return "static"; + } else { + // 쿼리 파라미터가 있는 경우 + model.addAttribute("name", name); + return "hello"; + } + + } + @GetMapping("/json") + @ResponseBody public Person json() { // TODO: /json 요청 시 {"name": "brown", "age": 20} 데이터를 응답할 수 있도록 설정하세요. - return null; + return new Person("brown", 20); } } diff --git a/spring-mvc-1/initial/src/main/resources/static/hi.html b/spring-mvc-1/initial/src/main/resources/static/index.html similarity index 100% rename from spring-mvc-1/initial/src/main/resources/static/hi.html rename to spring-mvc-1/initial/src/main/resources/static/index.html diff --git a/spring-mvc-1/initial/src/main/resources/templates/static.html b/spring-mvc-1/initial/src/main/resources/static/static.html similarity index 100% rename from spring-mvc-1/initial/src/main/resources/templates/static.html rename to spring-mvc-1/initial/src/main/resources/static/static.html From 257d8a7528ca091d0a2542eeea3aae681bea82bc Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 5 Aug 2024 18:35:07 +0900 Subject: [PATCH 02/16] =?UTF-8?q?[spring-mvc-1]=20ivy.lee(=EC=9D=B4?= =?UTF-8?q?=EB=8B=A4=EC=98=88)=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C=EC=B6=9C?= =?UTF-8?q?=ED=95=A9=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-mvc-1/initial/src/main/java/cholog/MemberController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java index 3a12f651..0a8199d8 100644 --- a/spring-mvc-1/initial/src/main/java/cholog/MemberController.java +++ b/spring-mvc-1/initial/src/main/java/cholog/MemberController.java @@ -16,7 +16,7 @@ public String world(@RequestParam(name = "name", required = false) String name, // 쿼리 파라미터가 없는 경우 return "static"; } else { - // 쿼리 파라미터가 있는 경우 + // 쿼리 파라미터가 있는 경우. model.addAttribute("name", name); return "hello"; } From 18c9ca4830463f3123e90d52533b449012173af7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Mon, 5 Aug 2024 21:25:58 +0900 Subject: [PATCH 03/16] =?UTF-8?q?[spring-mvc-2]=20ivy.lee(=EC=9D=B4?= =?UTF-8?q?=EB=8B=A4=EC=98=88)=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C=EC=B6=9C?= =?UTF-8?q?=ED=95=A9=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cholog/MemberController.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/spring-mvc-2/initial/src/main/java/cholog/MemberController.java b/spring-mvc-2/initial/src/main/java/cholog/MemberController.java index 5a380e7a..927d98a4 100644 --- a/spring-mvc-2/initial/src/main/java/cholog/MemberController.java +++ b/spring-mvc-2/initial/src/main/java/cholog/MemberController.java @@ -5,12 +5,11 @@ import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicLong; + +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.*; @Controller public class MemberController { @@ -19,9 +18,9 @@ public class MemberController { private final AtomicLong index = new AtomicLong(1); @PostMapping("/members") - public ResponseEntity create() { + public ResponseEntity create(@RequestBody Member member) { // TODO: member 정보를 받아서 생성한다. - Member newMember = Member.toEntity(null, index.getAndIncrement()); + Member newMember = Member.toEntity(member, index.getAndIncrement()); members.add(newMember); return ResponseEntity.created(URI.create("/members/" + newMember.getId())).build(); } @@ -29,31 +28,32 @@ public ResponseEntity create() { @GetMapping("/members") public ResponseEntity> read() { // TODO: 저장된 모든 member 정보를 반환한다. - return null; + return new ResponseEntity<>(members, HttpStatus.OK); } @PutMapping("/members/{id}") - public ResponseEntity update() { + public ResponseEntity update(@PathVariable Long id, @RequestBody Member newMember) { // TODO: member의 수정 정보와 url 상의 id 정보를 받아 member 정보를 수정한다. Member member = members.stream() - .filter(it -> Objects.equals(it.getId(), null)) + .filter(it -> Objects.equals(it.getId(), id)) .findFirst() .orElseThrow(RuntimeException::new); - member.update(null); + member.update(newMember); + //return new ResponseEntity<>(null, HttpStatus.NO_CONTENT); 이건 왜 안되는지? return null; } @DeleteMapping("/members/{id}") - public ResponseEntity delete() { + public ResponseEntity delete(@PathVariable Long id) { // TODO: url 상의 id 정보를 받아 member를 삭제한다. Member member = members.stream() - .filter(it -> Objects.equals(it.getId(), null)) + .filter(it -> Objects.equals(it.getId(), id)) .findFirst() .orElseThrow(RuntimeException::new); members.remove(member); - return null; + return new ResponseEntity<>(HttpStatus.NO_CONTENT); } } From f36b2c2424301f5bd360e3e2b226af912b9335dc Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 10:49:22 +0900 Subject: [PATCH 04/16] =?UTF-8?q?Feat:=201.1.=20Bean=20Registration,=20?= =?UTF-8?q?=EC=96=B4=EB=96=A4=20=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98=EC=9D=84=20=EB=B6=99=EC=98=80=EC=9D=84=20=EB=95=8C=20?= =?UTF-8?q?Bean=EC=9C=BC=EB=A1=9C=20=EC=83=9D=EC=84=B1=EB=90=98=EB=8A=94?= =?UTF-8?q?=EC=A7=80=20=ED=95=99=EC=8A=B5=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java b/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java index 871bf83e..e2490848 100644 --- a/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java +++ b/spring-core-1/initial/src/main/java/cholog/bean/SpringBean.java @@ -5,6 +5,7 @@ /* 어떤 어노테이션을 붙였을 때 Bean으로 생성되는지 학습하기 */ +@Component public class SpringBean { public String hello() { return "Hello"; From cf8ace6f2b9b14442a79de4f78e1ab0498b0ce09 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 10:52:12 +0900 Subject: [PATCH 05/16] =?UTF-8?q?Feat:1.2=20Bean=20Autowiring,=20=EC=96=B4?= =?UTF-8?q?=EB=96=A4=20=EB=B0=A9=EB=B2=95=EC=9C=BC=EB=A1=9C=20Component?= =?UTF-8?q?=EC=97=90=20Bean=EC=9D=84=20=EC=A3=BC=EC=9E=85=ED=95=98?= =?UTF-8?q?=EB=8A=94=EC=A7=80=20=ED=95=99=EC=8A=B5=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/bean/AutowiredBean.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java b/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java index 02e1010d..5be08773 100644 --- a/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java +++ b/spring-core-1/initial/src/main/java/cholog/bean/AutowiredBean.java @@ -5,9 +5,7 @@ @Component public class AutowiredBean { - /* - 어떤 방법으로 Component에 Bean을 주입하는지 학습하기 - */ + @Autowired private SpringBean springBean; public String sayHello() { From 24ecb3e3bab16b6602591c79494433923e644398 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 11:15:54 +0900 Subject: [PATCH 06/16] =?UTF-8?q?Feat:=202.1.=20Constructor=20Injection,?= =?UTF-8?q?=20ConstructorInjection=EC=9C=BC=EB=A1=9C=20InjectionBean=20?= =?UTF-8?q?=EC=A3=BC=EC=9E=85=EB=B0=9B=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cholog/di/ConstructorInjection.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java b/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java index 266e70b1..1bd8a966 100644 --- a/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java +++ b/spring-core-1/initial/src/main/java/cholog/di/ConstructorInjection.java @@ -6,9 +6,10 @@ public class ConstructorInjection { private InjectionBean injectionBean; - /* - ConstructorInjection으로 InjectionBean 주입받기 - */ + public ConstructorInjection(InjectionBean injectionBean){ + this.injectionBean = injectionBean; + } + public String sayHello() { return injectionBean.hello(); } From 1e7343001d62ad4f8dd6a9bf5db041ec23e428aa Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 11:19:43 +0900 Subject: [PATCH 07/16] =?UTF-8?q?Feat:=202.2.=20Setter=20Injection,=20Sett?= =?UTF-8?q?er=20Injection=EC=9C=BC=EB=A1=9C=20InjectionBean=20=EC=A3=BC?= =?UTF-8?q?=EC=9E=85=EB=B0=9B=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/di/SetterInjection.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java b/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java index 7dc3f162..6250c8ac 100644 --- a/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java +++ b/spring-core-1/initial/src/main/java/cholog/di/SetterInjection.java @@ -7,9 +7,10 @@ public class SetterInjection { private InjectionBean injectionBean; - /* - Setter Injection으로 InjectionBean 주입받기 - */ + @Autowired + public void setInjectionBean(InjectionBean injectionBean){ + this.injectionBean = injectionBean; + } public String sayHello() { return injectionBean.hello(); From e66249c32d030b3521efcbc210ab97584778b3fc Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 11:21:40 +0900 Subject: [PATCH 08/16] =?UTF-8?q?Feat:=202.3.=20Field=20Injection,=20Field?= =?UTF-8?q?Injection=EC=9C=BC=EB=A1=9C=20InjectionBean=20=EC=A3=BC?= =?UTF-8?q?=EC=9E=85=EB=B0=9B=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/di/FieldInjection.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java b/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java index b2718b03..8f4ea0de 100644 --- a/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java +++ b/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java @@ -9,6 +9,7 @@ public class FieldInjection { /* FieldInjection으로 InjectionBean 주입받기 */ + @Autowired private InjectionBean injectionBean; public String sayHello() { From e1c91a809e8141fb6f95a544e3765efc502d2307 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 11:22:03 +0900 Subject: [PATCH 09/16] =?UTF-8?q?Feat:=202.3.=20Field=20Injection,=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/di/FieldInjection.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java b/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java index 8f4ea0de..6c649f24 100644 --- a/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java +++ b/spring-core-1/initial/src/main/java/cholog/di/FieldInjection.java @@ -6,9 +6,6 @@ @Service public class FieldInjection { - /* - FieldInjection으로 InjectionBean 주입받기 - */ @Autowired private InjectionBean injectionBean; From ae95b611ae52d569d6ca69bfca7a42d8fd7a06fe Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 11:43:00 +0900 Subject: [PATCH 10/16] =?UTF-8?q?Feat:=203.1.=20@ComponentScan,=20Componen?= =?UTF-8?q?tScan=EC=97=90=20=EB=8C=80=ED=95=B4=20=ED=95=99=EC=8A=B5?= =?UTF-8?q?=ED=95=98=EA=B3=A0,=20ComponenetScanBean=EC=9D=84=20Bean?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=93=B1=EB=A1=9D=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cholog/scan/ContextConfiguration.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java b/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java index ba2e8eb8..30df2cce 100644 --- a/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java +++ b/spring-core-1/initial/src/main/java/cholog/scan/ContextConfiguration.java @@ -1,10 +1,11 @@ package cholog.scan; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; @Configuration -/* -ComponentScan에 대해 학습하고, ComponenetScanBean을 Bean으로 등록하기 - */ +@ComponentScan(basePackages = "cholog.scan") public class ContextConfiguration { } + From 7b202ddb876342e9d6c5fb12cd3afc1ff8d6f804 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 13:47:25 +0900 Subject: [PATCH 11/16] =?UTF-8?q?Feat:=201.1.=20Declaring=20a=20Bean,=20Ja?= =?UTF-8?q?va-based=20Configuration=EC=9D=84=20=ED=95=98=EA=B8=B0=20?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A1=9C=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95=ED=95=98=EA=B8=B0,=20AuthService=20=EB=B9=88?= =?UTF-8?q?=EC=9D=84=20=EB=93=B1=EB=A1=9D=ED=95=98=EA=B8=B0,Authentication?= =?UTF-8?q?PrincipalArgumentResolver=EB=A5=BC=20=EB=B9=88=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=ED=95=98=EA=B3=A0=20authService=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=9C=20=EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=84=20=EC=A3=BC?= =?UTF-8?q?=EC=9E=85=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cholog/configuration/AuthService.java | 2 ++ .../cholog/configuration/config/AppConfig.java | 17 +++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/spring-core-2/initial/src/main/java/cholog/configuration/AuthService.java b/spring-core-2/initial/src/main/java/cholog/configuration/AuthService.java index 020f05e0..62dd7442 100644 --- a/spring-core-2/initial/src/main/java/cholog/configuration/AuthService.java +++ b/spring-core-2/initial/src/main/java/cholog/configuration/AuthService.java @@ -1,5 +1,7 @@ package cholog.configuration; +import org.springframework.stereotype.Component; +//@Component public class AuthService { public String findMemberName() { return "사용자"; diff --git a/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java b/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java index 6c9445ab..9836f858 100644 --- a/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java +++ b/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java @@ -2,18 +2,23 @@ import cholog.configuration.AuthService; import cholog.configuration.AuthenticationPrincipalArgumentResolver; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; -// TODO: Java-based Configuration을 하기 위한 클래스로 지정하기 +@Configuration +@ComponentScan(basePackages = "cholog.scan") public class AppConfig { - // TODO: AuthService 빈을 등록하기 + @Bean public AuthService authService() { - return null; + // 실제 구현체가 없으면 빈이 등록되지 않는다. + return new AuthService(); } - // TODO: AuthenticationPrincipalArgumentResolver를 빈 등록하고 authService에 대한 의존성을 주입하기 - public AuthenticationPrincipalArgumentResolver authenticationPrincipalArgumentResolver() { - return null; + @Bean + public AuthenticationPrincipalArgumentResolver authenticationPrincipalArgumentResolver(AuthService authService) { + return new AuthenticationPrincipalArgumentResolver(authService); } } From 1e057c3fbd6e9df4202472608fc02663892a9266 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 16:08:26 +0900 Subject: [PATCH 12/16] =?UTF-8?q?Feat:=201.2=20Bean=20Dependencies,Authent?= =?UTF-8?q?icationPrincipalArgumentResolver=EB=A5=BC=20=EB=B9=88=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=ED=95=98=EA=B3=A0=20authService=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=84=20?= =?UTF-8?q?=EC=A3=BC=EC=9E=85=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cholog/configuration/config/AppConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java b/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java index 9836f858..7e7709b2 100644 --- a/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java +++ b/spring-core-2/initial/src/main/java/cholog/configuration/config/AppConfig.java @@ -12,8 +12,8 @@ public class AppConfig { @Bean public AuthService authService() { - // 실제 구현체가 없으면 빈이 등록되지 않는다. return new AuthService(); + // 실제 구현체가 없으면 빈이 등록되지 않는다. } @Bean From 0cb9f37c195b53fc46da9680f4dee6c6cbc97779 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 16:36:56 +0900 Subject: [PATCH 13/16] =?UTF-8?q?Feat:=202.1.=20Using=20@PropertySource=20?= =?UTF-8?q?and=20Environment,=20Java-based=20Configuration=EC=9D=84=20?= =?UTF-8?q?=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EB=A1=9C=20=EC=A7=80=EC=A0=95=ED=95=98=EA=B8=B0,=20ex?= =?UTF-8?q?t-api.properties=20=ED=8C=8C=EC=9D=BC=EC=9D=84=20=ED=99=9C?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80=ED=95=98=EA=B8=B0,=20ext-api.pro?= =?UTF-8?q?perties=EC=9D=98=20google.api.endpoint=20=EA=B0=92=EC=9D=84=20E?= =?UTF-8?q?nvironment=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=B4=EC=84=9C=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0,=20=EC=9C=84=20endpoint=20?= =?UTF-8?q?=EA=B0=92=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=97=AC=20Goo?= =?UTF-8?q?gleMapsRestClient=EB=A5=BC=20=EB=B9=88=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../property/config/PropertySourceConfig.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java b/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java index 03885a37..9633fc41 100644 --- a/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java +++ b/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java @@ -2,10 +2,14 @@ import cholog.property.GoogleDriveRestClient; import cholog.property.GoogleMapsRestClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; -// TODO: Java-based Configuration을 하기 위한 클래스로 지정하기 -// TODO: ext-api.properties 파일을 활용하기 위한 설정 추가하기 +@Configuration +@PropertySource("classpath:ext-api.properties") public class PropertySourceConfig { private final Environment env; @@ -14,10 +18,10 @@ public PropertySourceConfig(Environment env) { this.env = env; } - // TODO: ext-api.properties의 google.api.endpoint 값을 Environment를 사용해서 가져오기 - // TODO: 위 endpoint 값을 사용하여 GoogleMapsRestClient를 빈으로 등록하기 + @Bean public GoogleMapsRestClient googleMapsRestClient() { - return new GoogleMapsRestClient(""); + String endpoint = env.getProperty("google.api.endpoint"); + return new GoogleMapsRestClient(endpoint); } // TODO: ext-api.properties의 google.api.endpoint 값을 어노테이션을 사용해서 가져오기 From ae61c19369001836f5cc699a12c29442144ebf6e Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 16:46:11 +0900 Subject: [PATCH 14/16] =?UTF-8?q?Feat:=202.2.=20Using=20@PropertySource=20?= =?UTF-8?q?and=20@Value,=20ext-api.properties=EC=9D=98=20google.api.endpoi?= =?UTF-8?q?nt=20=EA=B0=92=EC=9D=84=20=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=B4=EC=84=9C=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0,=20=EC=9C=84=20endpoint=20?= =?UTF-8?q?=EA=B0=92=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=97=AC=20Goo?= =?UTF-8?q?gleMapsRestClient=EB=A5=BC=20=EB=B9=88=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cholog/property/config/PropertySourceConfig.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java b/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java index 9633fc41..5e92a83e 100644 --- a/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java +++ b/spring-core-2/initial/src/main/java/cholog/property/config/PropertySourceConfig.java @@ -2,7 +2,7 @@ import cholog.property.GoogleDriveRestClient; import cholog.property.GoogleMapsRestClient; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @@ -24,9 +24,11 @@ public GoogleMapsRestClient googleMapsRestClient() { return new GoogleMapsRestClient(endpoint); } - // TODO: ext-api.properties의 google.api.endpoint 값을 어노테이션을 사용해서 가져오기 - // TODO: 위 endpoint 값을 사용하여 GoogleMapsRestClient를 빈으로 등록하기 + @Value("${google.api.endpoint}") + private String googleApiEndpoint; + + @Bean public GoogleDriveRestClient googleDriveRestClient() { - return new GoogleDriveRestClient(""); + return new GoogleDriveRestClient(googleApiEndpoint); } } From 755377834b440692270dfd32d2185b1e3a597539 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 16:56:12 +0900 Subject: [PATCH 15/16] =?UTF-8?q?2.3.=20Externalized=20Configuration=20(Sp?= =?UTF-8?q?ring=20Boot),=20Java-based=20Configuration=EC=9D=84=20=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=9C=84=ED=95=9C=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=EB=A1=9C=20=EC=A7=80=EC=A0=95=ED=95=98=EA=B8=B0,=20application?= =?UTF-8?q?.properties=EC=9D=98=20security.jwt.token.secret-key=20?= =?UTF-8?q?=EA=B0=92=EC=9D=84=20=ED=99=9C=EC=9A=A9=ED=95=98=EC=97=AC=20Jwt?= =?UTF-8?q?TokenKeyProvider=EB=A5=BC=20=EB=B9=88=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cholog/property/config/AuthConfig.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-core-2/initial/src/main/java/cholog/property/config/AuthConfig.java b/spring-core-2/initial/src/main/java/cholog/property/config/AuthConfig.java index b93bd957..fa117ee1 100644 --- a/spring-core-2/initial/src/main/java/cholog/property/config/AuthConfig.java +++ b/spring-core-2/initial/src/main/java/cholog/property/config/AuthConfig.java @@ -1,11 +1,18 @@ package cholog.property.config; import cholog.property.JwtTokenKeyProvider; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; -// TODO: Java-based Configuration을 하기 위한 클래스로 지정하기 + +@Configuration public class AuthConfig { - // TODO: application.properties의 security.jwt.token.secret-key 값을 활용하여 JwtTokenKeyProvider를 빈으로 등록하기 + @Value("${security.jwt.token.secret-key}") + private String secretKey; + + @Bean public JwtTokenKeyProvider jwtTokenKeyProvider() { - return new JwtTokenKeyProvider(""); + return new JwtTokenKeyProvider(secretKey); } } From 16fdf8586be4a274fe0f77daa763bb2eab9da491 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J6GSER3\\user" Date: Wed, 14 Aug 2024 17:02:31 +0900 Subject: [PATCH 16/16] =?UTF-8?q?3.1.=20@Profile,=20Java-based=20Configura?= =?UTF-8?q?tion=EC=9D=84=20=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A1=9C=20=EC=A7=80=EC=A0=95?= =?UTF-8?q?=ED=95=98=EA=B8=B0,=20dev=20=ED=94=84=EB=A1=9C=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=9D=BC=20=EB=95=8C=EB=A7=8C=20InmemoryMessageReposi?= =?UTF-8?q?tory=20=EB=B9=88=EC=9D=B4=20=EB=93=B1=EB=A1=9D=EB=90=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=84=A4=EC=A0=95=ED=95=98=EA=B8=B0,=20pr?= =?UTF-8?q?od=20=ED=94=84=EB=A1=9C=ED=8C=8C=EC=9D=BC=EC=9D=BC=20=EB=95=8C?= =?UTF-8?q?=EB=A7=8C=20InmemoryMessageRepository=20=EB=B9=88=EC=9D=B4=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cholog/profile/config/ProfileConfig.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/spring-core-2/initial/src/main/java/cholog/profile/config/ProfileConfig.java b/spring-core-2/initial/src/main/java/cholog/profile/config/ProfileConfig.java index 11586947..2e1f67cb 100644 --- a/spring-core-2/initial/src/main/java/cholog/profile/config/ProfileConfig.java +++ b/spring-core-2/initial/src/main/java/cholog/profile/config/ProfileConfig.java @@ -3,16 +3,21 @@ import cholog.profile.InmemoryMessageRepository; import cholog.profile.JdbcMessageRepository; import cholog.profile.MessageRepository; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; -// TODO: Java-based Configuration을 하기 위한 클래스로 지정하기 +@Configuration public class ProfileConfig { - // TODO: dev 프로파일일 때만 InmemoryMessageRepository 빈이 등록되도록 설정하기 + @Bean("dataSource") + @Profile("dev") public MessageRepository inMemoryMessageRepository() { return new InmemoryMessageRepository(); } - // TODO: prod 프로파일일 때만 InmemoryMessageRepository 빈이 등록되도록 설정하기 + @Bean("dataSource") + @Profile("prod") public MessageRepository jdbcMessageRepository() { return new JdbcMessageRepository(); }