Skip to content

Instantly share code, notes, and snippets.

@leechoongyon
leechoongyon / gist:852d5cfca3c30563a5a2a3807e93a15a
Created August 16, 2023 13:37
gradle-spring-profile-apply-example.gradle
# profile 값에 따른 소스파일 변경 설정. profile 값이 없을 경우 local 이 default 입니다.
ext.profile = (!project.hasProperty(‘profile’) || !profile) ? ‘local’ : profile
# resource-env/local, resource-env/dev 와 같이 폴더를 설정해서 해당 파일을 bootJar 을 통해 묶습니다. 아래와 같이 설정한다면 별도 application.yml 을 적용시킬 수 있습니다.
sourceSets {
main {
resources {
srcDirs “src/main/resources”, “src/main/resources-env/${profile}”
}
}
    
    // fixture-monkey
    testImplementation('com.navercorp.fixturemonkey:fixture-monkey-starter:0.5.2')
    testImplementation('com.navercorp.fixturemonkey:fixture-monkey-javax-validation:0.5.2')
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-jackson:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-jakarta-validation:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-junit-jupiter:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-autoparams:0.5.2")
    testImplementation("com.navercorp.fixturemonkey:fixture-monkey-engine:0.5.2")
@leechoongyon
leechoongyon / TestContainerExample.java
Created April 22, 2023 05:25
TestContainerExample.java
// UserRepositoryTest.java
@DataJpaTest
@Import(TestMySQLContainer::class, DataSourceConfig::class)
class UserRepositoryTest {
// lateinit 이 변수가 나중에 초기화될 것이며, 선언할 때 즉시 초기화할 필요가 없다는 것을 의미
@Autowired
private lateinit var userRepository: UserRepository
@Test
@leechoongyon
leechoongyon / CompositePatternExample.java
Created February 11, 2023 12:37
CompositePatternExample.java
class HamBurgerTest {
@Test
void testCalulateCalories() {
final HamBurger hamBurger = HamBurger.from(
List.of(
new Patty(200),
new Lettuce(50)
)
@leechoongyon
leechoongyon / StaticFactoryMethodTest.java
Last active February 11, 2023 06:33
StaticFactoryMethodTest.java
public class StaticFactoryMethodTest {
private static final String DEFAULT_ID = "10";
private static final String DEFAULT_NAME = "test";
/**
* from : 매개 변수를 하나 받아서 해당 타입의 인스턴스를 반환하는 method 명명 규칙입니다.
*/
@Test
@DisplayName("정적팩토리메서드 from 테스트")
@leechoongyon
leechoongyon / MapSortExample.java
Created February 10, 2023 15:44
MapSortExample.java
class MapSortTest {
@Test
@DisplayName("String type value 로 map sort")
void testMapSortStringValueTest() {
final Map<Integer, String> map = Map.of(
10, "abc",
5, "def",
2, "adef"
);
@leechoongyon
leechoongyon / MapstructUsingExpression.java
Created January 21, 2023 00:18
MapstructUsingExpression.java
// ItemInfoMapper.java
@Mapper(
componentModel = "spring",
injectionStrategy = InjectionStrategy.CONSTRUCTOR,
unmappedTargetPolicy = ReportingPolicy.ERROR
)
public interface ItemInfoMapper {
ItemInfoMapper INSTANCE = Mappers.getMapper(ItemInfoMapper.class);
@leechoongyon
leechoongyon / SpringValidateBySpel.java
Created January 13, 2023 14:13
SpringValidateBySpel.java
// build.gradle
implementation 'org.springframework.boot:spring-boot-starter-validation'
// ItemConstraint.java
@Documented
@Retention(RUNTIME)
@leechoongyon
leechoongyon / ExtendEnumExample.java
Created January 4, 2023 15:07
ExtendEnumExample.java
// enum
public enum MemberTypeEnum {
BRONZE, SILVER, GOLD
}
// test source
public class MemberTypeEnumTest {
private static Map<MemberTypeEnum, Supplier<String>> enumMap;
@leechoongyon
leechoongyon / ValidationCustomExample.java
Created January 1, 2023 11:16
ValidationCustomExample.java
// build.gradle
implementation 'org.springframework.boot:spring-boot-starter-validation'
// controller
@Slf4j
@RestController
@RequiredArgsConstructor