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..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,16 +2,21 @@ import cholog.configuration.AuthService; import cholog.configuration.AuthenticationPrincipalArgumentResolver; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; // TODO: Java-based Configuration을 하기 위한 클래스로 지정하기 +@Configuration public class AppConfig { // TODO: AuthService 빈을 등록하기 + @Bean public AuthService authService() { return null; } // TODO: AuthenticationPrincipalArgumentResolver를 빈 등록하고 authService에 대한 의존성을 주입하기 + @Bean public AuthenticationPrincipalArgumentResolver authenticationPrincipalArgumentResolver() { return null; } 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(); } 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); } + } 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 값을 어노테이션을 사용해서 가져오기 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); }