From 45396078421158ccd0da616b767221bbb23c21af Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:57:33 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20Declaring=20a=20Bean=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= 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, 2 insertions(+) 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..ff1ba51e 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,8 +2,10 @@ import cholog.configuration.AuthService; import cholog.configuration.AuthenticationPrincipalArgumentResolver; +import org.springframework.context.annotation.Configuration; // TODO: Java-based Configuration을 하기 위한 클래스로 지정하기 +@Configuration public class AppConfig { // TODO: AuthService 빈을 등록하기 From e7af6a05efff0d49f302a46b7772ec6524b4dfaf Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 10:59:25 +0900 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20Bean=20Dependencies=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cholog/configuration/config/AppConfig.java | 3 +++ 1 file changed, 3 insertions(+) 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 ff1ba51e..802ea96a 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,6 +2,7 @@ import cholog.configuration.AuthService; import cholog.configuration.AuthenticationPrincipalArgumentResolver; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; // TODO: Java-based Configuration을 하기 위한 클래스로 지정하기 @@ -9,11 +10,13 @@ public class AppConfig { // TODO: AuthService 빈을 등록하기 + @Bean public AuthService authService() { return null; } // TODO: AuthenticationPrincipalArgumentResolver를 빈 등록하고 authService에 대한 의존성을 주입하기 + @Bean public AuthenticationPrincipalArgumentResolver authenticationPrincipalArgumentResolver() { return null; } From defae4d3d9e7089175323380a6b7f71c0bbc8288 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 11:09:24 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20Using=20@PropertySource=20and=20@Va?= =?UTF-8?q?lue=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cholog/property/config/PropertySourceConfig.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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..9621081f 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,15 @@ import cholog.property.GoogleDriveRestClient; import cholog.property.GoogleMapsRestClient; +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; @@ -16,8 +21,9 @@ public PropertySourceConfig(Environment env) { // TODO: ext-api.properties의 google.api.endpoint 값을 Environment를 사용해서 가져오기 // TODO: 위 endpoint 값을 사용하여 GoogleMapsRestClient를 빈으로 등록하기 + @Bean public GoogleMapsRestClient googleMapsRestClient() { - return new GoogleMapsRestClient(""); + return new GoogleMapsRestClient(env.getProperty("google.api.endpoint")); } // TODO: ext-api.properties의 google.api.endpoint 값을 어노테이션을 사용해서 가져오기 From eb8eb5a000e8e2d6107e996647dbaaa7175b425a Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 11:13:32 +0900 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20Externalized=20Configuration=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cholog/property/config/AuthConfig.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 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..08f2f49a 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,17 @@ 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를 빈으로 등록하기 - public JwtTokenKeyProvider jwtTokenKeyProvider() { - return new JwtTokenKeyProvider(""); + @Bean + public JwtTokenKeyProvider jwtTokenKeyProvider(@Value("${security.jwt.token.secret-key}") String secretKey) { + return new JwtTokenKeyProvider(secretKey); } + } From 0967ba9bb7356eae9fbfbc407f73ecf4119d6422 Mon Sep 17 00:00:00 2001 From: msung99 Date: Tue, 13 Aug 2024 11:19:51 +0900 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20@Profile=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cholog/profile/config/ProfileConfig.java | 8 ++++++++ 1 file changed, 8 insertions(+) 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..6214ee23 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,24 @@ 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(); } From 03aa38ad5f2efbecc53aadbf87a36cee1f911ecf Mon Sep 17 00:00:00 2001 From: msung99 Date: Mon, 19 Aug 2024 22:52:42 +0900 Subject: [PATCH 6/6] =?UTF-8?q?feat:=20Spring=20Data=20JPA-1=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initial/src/main/java/cholog/Customer.java | 9 ++++++++- .../initial/src/main/java/cholog/CustomerRepository.java | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spring-data-jpa-1/initial/src/main/java/cholog/Customer.java b/spring-data-jpa-1/initial/src/main/java/cholog/Customer.java index 492197fc..fd3c911c 100644 --- a/spring-data-jpa-1/initial/src/main/java/cholog/Customer.java +++ b/spring-data-jpa-1/initial/src/main/java/cholog/Customer.java @@ -1,7 +1,14 @@ package cholog; -public class Customer { +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +@Entity +public class Customer { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String firstName; private String lastName; diff --git a/spring-data-jpa-1/initial/src/main/java/cholog/CustomerRepository.java b/spring-data-jpa-1/initial/src/main/java/cholog/CustomerRepository.java index 879c8fe8..e7837cb4 100644 --- a/spring-data-jpa-1/initial/src/main/java/cholog/CustomerRepository.java +++ b/spring-data-jpa-1/initial/src/main/java/cholog/CustomerRepository.java @@ -1,5 +1,11 @@ package cholog; -public interface CustomerRepository { +import org.springframework.data.repository.CrudRepository; +import java.util.List; + +public interface CustomerRepository extends CrudRepository { + List findByLastName(String lastName); + List findByLastNameIgnoreCase(String lastName); + List findByLastNameOrderByFirstNameDesc(String lastName); }