What is TestContainer??Testcontainers is a testing library that provides easy and lightweight APIs for bootstrapping integration tests with real services wrapped in Docker containers. Using Testcontainers, you can write tests talking to the same type of services you use in production without mocks or in-memory services.번역Testcontainers는 실제 서비스를 도커(Docker) 컨테이너로 감싸 부트스트래핑 통합 테스트를 위한 쉽고 가벼운 API를 제..
자세히보기NextJs, React와 같은 프레임워크를 공부하는 것도 좋긴 하지만 빠르게 변화하다보니 학습에 대한 부담이 크다고 느껴졌다.하지만 Spring Boot + Thymeleaf 에서 BootStrap을 사용해본적이 있었다.이번에는 Spring Boot + Thymeleaf 에서 Tailwind CSS를 사용해보고자 한다. ( 개인적으로 Tailwind 가 더 이쁜듯.. )Tailwind CSS 란?홈페이지 바로가기💡 Tailwind CSS는 plex , pt-4 , text-center , rotate-90 과 같은 class로 구성된 utility-first CSS framework로, markup에서 바로 어떤 디자인이든 만들 수 있다.html에 style을 설정하는 부분을 Tailwind CSS가..
자세히보기목표코드베이스에 유연성을 추가하고 유지보수성을 개선하는 데 도움을 주는 개방/폐쇄 원칙(OCP) 을 배워보자언제 인터페이스를 사용해야 좋을지를 설명하는 일반적인 가이드라인과 높은 결합도를 피할 수 있는 상황도 배워보자예제// 특정금액 이하 입출금내역 조회하기public List findTransactionsGreaterThanEqual(final int amount) { final List result = new ArrayList(); for(final BankTransaction bt: bankTansactions) { if(bt.getAmount() >= amount) { result.add(bt); } } return result;}..
자세히보기결합도한 기능이 다른 클래스에 얼마나 의존하고 있는지를 가늠한다. 결합도는 어떤 클래스를 구현하는데 얼마나 많은 다른 클래스를 참조했는가로 설명할 수 있다.더 많은 클래스를 참조했다면 기능을 변경할 때 그만큼 유연성이 떨어지고, 어떤 클래스의 코드를 수정하게 되면 이 클래스에 의존하는 모든 클래스가 영향을 받게 된다.비유 예시시계를 생각해보아라, 시계가 어떻게 동작하는지 몰라도 시간을 알아내는 데 문제가 없다.사람은 시계 내부 구조에 의존하지 않기 때문이다. 이는 두 가지 임무인 인터페이스와 구현이 서로 결합되지 않았기 때문이다.코드 예시public interface BankStatementParser { BankTransaction parseFrom(String line); List pars..
자세히보기final 변수지역 변수나 필드를 final로 정의하기 때문에 이 변수에 값을 재할당 할 수 없다.코드에서 가능한 많은 변수를 final로 표시하면 어떤 객체의 상태가 바뀔 수 있고, 어떤 객체의 상태가 발쓀 수 없는지 명확하게 구분할 수 있다.자바 언어에서 final 키워드가 쓸모없는 상황도 있다. 추상 메서드(인터페이스 내)의 메서드 파라미터에 final을 사용하는 상황이다. 자바 10에서 var 키워드가 등장하고 final 유용성이 크게 감소되었다.갓 클래스한 개의 파일에 모든 코드를 구현해서 거대한 클래스가 탄생되는 클래스.기존 코드의 로직을 갱신해야 한다면, 어떻게 이 코드를 찾아서 바꿀 수 있을까? 이런 문제를 갓 클래스 안티 패턴이라 부른다.단일책임원칙(SRP)쉽게 관리하고 유지보수하는 코드..
자세히보기What is TestContainer??Testcontainers is a testing library that provides easy and lightweight APIs for bootstrapping integration tests with real services wrapped in Docker containers. Using Testcontainers, you can write tests talking to the same type of services you use in production without mocks or in-memory services.번역Testcontainers는 실제 서비스를 도커(Docker) 컨테이너로 감싸 부트스트래핑 통합 테스트를 위한 쉽고 가벼운 API를 제..
자세히보기NextJs, React와 같은 프레임워크를 공부하는 것도 좋긴 하지만 빠르게 변화하다보니 학습에 대한 부담이 크다고 느껴졌다.하지만 Spring Boot + Thymeleaf 에서 BootStrap을 사용해본적이 있었다.이번에는 Spring Boot + Thymeleaf 에서 Tailwind CSS를 사용해보고자 한다. ( 개인적으로 Tailwind 가 더 이쁜듯.. )Tailwind CSS 란?홈페이지 바로가기💡 Tailwind CSS는 plex , pt-4 , text-center , rotate-90 과 같은 class로 구성된 utility-first CSS framework로, markup에서 바로 어떤 디자인이든 만들 수 있다.html에 style을 설정하는 부분을 Tailwind CSS가..
자세히보기목표코드베이스에 유연성을 추가하고 유지보수성을 개선하는 데 도움을 주는 개방/폐쇄 원칙(OCP) 을 배워보자언제 인터페이스를 사용해야 좋을지를 설명하는 일반적인 가이드라인과 높은 결합도를 피할 수 있는 상황도 배워보자예제// 특정금액 이하 입출금내역 조회하기public List findTransactionsGreaterThanEqual(final int amount) { final List result = new ArrayList(); for(final BankTransaction bt: bankTansactions) { if(bt.getAmount() >= amount) { result.add(bt); } } return result;}..
자세히보기결합도한 기능이 다른 클래스에 얼마나 의존하고 있는지를 가늠한다. 결합도는 어떤 클래스를 구현하는데 얼마나 많은 다른 클래스를 참조했는가로 설명할 수 있다.더 많은 클래스를 참조했다면 기능을 변경할 때 그만큼 유연성이 떨어지고, 어떤 클래스의 코드를 수정하게 되면 이 클래스에 의존하는 모든 클래스가 영향을 받게 된다.비유 예시시계를 생각해보아라, 시계가 어떻게 동작하는지 몰라도 시간을 알아내는 데 문제가 없다.사람은 시계 내부 구조에 의존하지 않기 때문이다. 이는 두 가지 임무인 인터페이스와 구현이 서로 결합되지 않았기 때문이다.코드 예시public interface BankStatementParser { BankTransaction parseFrom(String line); List pars..
자세히보기final 변수지역 변수나 필드를 final로 정의하기 때문에 이 변수에 값을 재할당 할 수 없다.코드에서 가능한 많은 변수를 final로 표시하면 어떤 객체의 상태가 바뀔 수 있고, 어떤 객체의 상태가 발쓀 수 없는지 명확하게 구분할 수 있다.자바 언어에서 final 키워드가 쓸모없는 상황도 있다. 추상 메서드(인터페이스 내)의 메서드 파라미터에 final을 사용하는 상황이다. 자바 10에서 var 키워드가 등장하고 final 유용성이 크게 감소되었다.갓 클래스한 개의 파일에 모든 코드를 구현해서 거대한 클래스가 탄생되는 클래스.기존 코드의 로직을 갱신해야 한다면, 어떻게 이 코드를 찾아서 바꿀 수 있을까? 이런 문제를 갓 클래스 안티 패턴이라 부른다.단일책임원칙(SRP)쉽게 관리하고 유지보수하는 코드..
자세히보기What is TestContainer??Testcontainers is a testing library that provides easy and lightweight APIs for bootstrapping integration tests with real services wrapped in Docker containers. Using Testcontainers, you can write tests talking to the same type of services you use in production without mocks or in-memory services.번역Testcontainers는 실제 서비스를 도커(Docker) 컨테이너로 감싸 부트스트래핑 통합 테스트를 위한 쉽고 가벼운 API를 제..
자세히보기