-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Data 모듈을 추가합니다 #21
Changes from all commits
0cb84dc
2778360
7fcfd72
19523c5
95fca5d
55b6523
d87cea6
a28106f
b0d9c91
1cf70cf
8bcb137
7668abe
4ac6a05
b62ea6a
3e66504
c11ce11
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,9 @@ object DependencyVersion { | |
/** springDependencyManagementVersion */ | ||
const val SPRING_DEPENDENCY_MANAGEMENT = "1.1.5" | ||
|
||
/** flyway */ | ||
const val FLYWAY = "9.16.0" | ||
|
||
/** test */ | ||
const val MOCKK = "1.13.9" | ||
const val KOTEST = "5.8.0" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 새로운 상수 FLYWAY를 추가하고 있습니다. 겉보기에는 문제점이나 버그 위험을 볼 수 없습니다. 이 상수가 프로젝트에서 올바르게 사용되는지, 그리고 업데이트된 9.16.0버전의 Flyway 라이브러리가 프로젝트와 호환되는지 확인해 보시는 게 좋겠습니다. 나아가 개선 방안으로는 이 파일에서 버전 관리 되는 모든 라이브러리들의 최신화 여부를 확인하시는 것이 좋습니다. 의존성이 오래되면 보안 문제와 기능상의 문제를 유발할 수 있고, 경우에 따라 최신 버전의 언어나 프레임워크와 호환되지 않을 수 있습니다. 따라서 항상 각 의존성의 버전을 자주 체크하고 필요에 따라 업데이트하는 것이 중요합니다. |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
tasks.getByName("bootJar") { | ||
enabled = false | ||
} | ||
|
||
tasks.getByName("jar") { | ||
enabled = true | ||
} | ||
|
||
dependencies { | ||
/** spring starter */ | ||
implementation("org.springframework.boot:spring-boot-starter-data-jdbc") | ||
implementation("com.mysql:mysql-connector-j") | ||
|
||
/** flyway */ | ||
implementation("org.flywaydb:flyway-core:${DependencyVersion.FLYWAY}") | ||
implementation("org.flywaydb:flyway-mysql") | ||
} | ||
|
||
This comment was marked as duplicate.
Sorry, something went wrong. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.few.data.config | ||
|
||
import org.springframework.context.annotation.ComponentScan | ||
import org.springframework.context.annotation.Configuration | ||
|
||
@Configuration | ||
@ComponentScan(basePackages = [DataConfig.BASE_PACKAGE]) | ||
class DataConfig { | ||
companion object { | ||
const val BASE_PACKAGE = "com.few.data" | ||
const val SERVICE_NAME = "few" | ||
const val MODULE_NAME = "few-data" | ||
const val BEAN_NAME_PREFIX = "fewData" | ||
const val PROPERTY_PREFIX = SERVICE_NAME + "." + MODULE_NAME | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드는 잘 작성되었지만 몇 가지 개선 사항을 제안하고 싶습니다:
이상의 내용들은 주로 유지 보수성, 확장성, 그리고 가독성을 위한 것들입니다. 현재로써는 딱히 버그를 발생시킬 요인이나 위험 요인은 보이지 않습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드를 간단히 살펴보면, Spring Framework 사전 설정이 있는 것으로 보입니다. 그러나 이 설정이 단독으로 사용되는 경우 문제가 없어 보입니다. 해당 코드가 등장하는 상황과 함께 보았을 때, 아래의 점들을 고려해 볼 수 있습니다.
마지막으로 이 코드 패치가 제대로 동작하는지 테스트 해볼 필요가 있습니다. 단위 테스트나 통합 테스트를 통해 이 클래스가 올바르게 Bean을 스캔하고 있는지, 그리고 필요에 따라 정의된 상수들을 올바르게 사용하고 있는지 확인하는 것이 좋습니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
package com.few.data.flyway | ||
|
||
import com.few.data.config.DataConfig | ||
import org.flywaydb.core.Flyway | ||
import org.flywaydb.core.api.configuration.FluentConfiguration | ||
import org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer | ||
import org.springframework.boot.autoconfigure.flyway.FlywayProperties | ||
import org.springframework.boot.context.properties.ConfigurationProperties | ||
import org.springframework.context.annotation.Bean | ||
import org.springframework.context.annotation.Configuration | ||
import org.springframework.context.annotation.Profile | ||
import java.util.function.Consumer | ||
import javax.sql.DataSource | ||
|
||
@Configuration | ||
class FlywayConfig { | ||
@Bean(name = [DataConfig.BEAN_NAME_PREFIX + "Flyway"]) | ||
fun flyway( | ||
configuration: org.flywaydb.core.api.configuration.Configuration? | ||
): Flyway { | ||
return Flyway(configuration) | ||
} | ||
|
||
@Profile("!new") | ||
@Bean(name = [DataConfig.BEAN_NAME_PREFIX + "FlywayValidateInitializer"]) | ||
fun flywayValidateInitializer( | ||
flyway: Flyway? | ||
): FlywayMigrationInitializer { | ||
return FlywayMigrationInitializer(flyway) { obj: Flyway -> obj.validate() } | ||
} | ||
|
||
@Bean(name = [DataConfig.BEAN_NAME_PREFIX + "FlywayMigrationInitializer"]) | ||
fun flywayMigrationInitializer( | ||
flyway: Flyway? | ||
): FlywayMigrationInitializer { | ||
return FlywayMigrationInitializer(flyway) { obj: Flyway -> obj.migrate() } | ||
} | ||
|
||
@Bean(name = [DataConfig.BEAN_NAME_PREFIX + "FlywayProperties"]) | ||
@ConfigurationProperties(prefix = "spring.flyway") | ||
fun flywayProperties(): FlywayProperties { | ||
return FlywayProperties() | ||
} | ||
|
||
@Bean(name = [DataConfig.BEAN_NAME_PREFIX + "FlywayConfiguration"]) | ||
fun configuration( | ||
dataSource: DataSource? | ||
): org.flywaydb.core.api.configuration.Configuration { | ||
val configuration = FluentConfiguration() | ||
configuration.dataSource(dataSource) | ||
flywayProperties().locations.forEach( | ||
Consumer { locations: String? -> | ||
configuration.locations( | ||
locations | ||
) | ||
} | ||
) | ||
return configuration | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치를 간략히 검토해 보겠습니다.
코드가 정상적으로 작동하더라도 위에서 제안한 사항들이 코드의 안정성과 관리 용이성을 향상시킬 수 있습니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
spring: | ||
flyway: | ||
locations: classpath:db/migration/entity | ||
sql-migration-suffixes: sql | ||
baseline-on-migrate: true | ||
baseline-version: 0 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 다음은 이 패치에 대한 코드 리뷰입니다:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치를 검토하면, 대개 정상적으로 작동해야합니다. 단, 몇 가지 주의점을 참고하세요:
개선할 부분이나 수정해야 할 중대한 위험이 발견되지는 않았습니다. 코드를 제공해주셔서 감사드립니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
spring: | ||
flyway: | ||
locations: classpath:db/migration/entity | ||
sql-migration-suffixes: sql | ||
baseline-on-migrate: true | ||
baseline-version: 0 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 Spring Boot에서 Flyway를 설정하는 설정 파일의 일부로 보입니다. 당신이 제공한 부분을 기준으로 보면, 눈에 띄는 문제나 버그는 없습니다. 그러나 다음과 같은 사항들을 주의하여야 합니다.
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
CREATE TABLE foo_tb | ||
( | ||
id BIGINT NOT NULL AUTO_INCREMENT, | ||
name VARCHAR(255) NOT NULL, | ||
deleted BIT NOT NULL, | ||
primary key (id) | ||
); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치는 새로운 'foo_tb' 테이블을 생성하는 MySQL DB 스크립트 처럼 보이며, 3개의 필드가 포함되어 있습니다: 버그 또는 잠재적 위험이있는 부분에 주목할 사항이 몇 가지 있습니다.
향상시킬 수 있는 영역:
코드는 다음과 같이 개선될 수 있습니다:
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
rootProject.name = "few" | ||
|
||
include("api") | ||
include("data") | ||
This comment was marked as duplicate.
Sorry, something went wrong. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드 패치를 살펴보면, 당신은 한 줄의 코드에서 공백을 삭제하는 것외에 아무런 변경이 없습니다. 이는 버그 위험성이나 개선 방안을 따로 제공하기 어려운 상황입니다. 그러나 기본적인 코딩 컨벤션을 따른다고 가정하면, 필요없는 공백 라인을 제거함으로써 코드의 가독성을 약간 향상시키고 있습니다.
혹시 추가적으로 검토를 원하는 다른 코드 부분이 있다면, 그 부분을 포함해서 문의해 주세요.