본문 바로가기

백엔드5

gradlew 명령어 알아보기 gradlew를 기반으로 gradle을 조작할 수 있다. 윈도우 환경에서는 gradlew.bat을 이용하여 이를 활용할 수 있다.가장 자주 사용되는 명령어 위주로 정리하였다. gradlewgradlew에 대해 간략한 소개 문구가 나온다. gradlew --helpgradlew에서 적용할 수 있는 옵션들을 나열한다. gradlew help --task [task]특정 태스크에 대한 설명과 가용한 옵션을 나열한다. gradlew tasksgradle에서 실행 가능한 태스크들을 확인할 수 있다. 적용한 플러그인에 따라 사용 가능한 명령어들이 추가된다. gradlew bootRun스프링부트를 실행한다. gradlew bootTestRun테스트 환경으로 스프링부트를 실행한다. gradlew bootBuildIm.. 2025. 8. 3.
JSpecify와 스프링 프레임워크 7에서의 적용 tl;dr스프링 프레임워크 7부터, null 체크 시 JSR-305를 더 이상 사용하지 않고 JSpecify를 사용하게 된다.7.0.0 스냅샷 Documentation에서 마이그레이션 가이드를 확인할 수 있다. JSpecify는, 해당 스택 오버플로우 질문과 같이, 자바에서 null check를 위해 사용하는 어노테이션이 뿔뿔이 흩어져 있어, null check의 표준이 되고자 만들어졌다. JSpeify는 명세로, 어노테이션만을 제공하고 있으며, 각 어노테이션이 어떤 방식으로 활용되어야 하는지에 대한 설명이 이루어져 있다. 스프링 프레임워크 7부터, null 체크 시 JSR-305를 더 이상 사용하지 않고 JSpecify를 사용하게 된다. `@NonNull`, `@Nullable`은 리턴 값, 파라미터,.. 2025. 7. 12.
IoC Container와 생명주기를 알아보자 2025-06-13 스프링부트 컨텍스트 생성 순서 수정tl;drBeanFactory와 ApplicationContext가 IoC Container이다.ApplicationContext가 BeanFactory의 기능을 확장하고 있으며, 내부적으로 해당 인스턴스를 관리한다.아래에서는 상세한 설명, 그리고 컨텍스트의 생성 방식 등을 설명해두었다.BeanFactory와 ApplicationContextspring-framework의 코어 기능은 IoC Container이다. BeanFactory와 ApplicationContext 인터페이스를 기반으로 구현되어 있으며, ApplicationContext가 BeanFactory의 기능을 확장하고 있다. *ApplicationContext는 내부적으로 BeanFac.. 2025. 6. 11.
스프링 프레임워크 `@Cacheable`을 알아보자 @Configuration 클래스에 @EnableCaching 어노테이션을 적용하면 캐싱이 가능하다. 메소드에 @Cacheable을 사용하면 해당 메소드에 캐싱이 적용되며, 같은 파라미터 입력에 대해 캐싱된 출력을 즉시 반환한다. @Cacheable 외에도 @CacheEvict, @CachePut, @Caching @CacheConfig 등의 어노테이션들이 존재한다. @Cacheable이 적용된 메소드에서 입력받은 파라미터는 KeyGenerator를 통해 SimpleKey를 생성하며, 이를 통해 캐싱한 데이터를 저장하고, 또 찾는다. 이 때, 객체의 hashCode 메소드와 equals 메소드를 사용한다. 파라미터의 어떤 속성을 기반으로 키를 생성할 것인지 설정할 수도 있다. 이 경우 SpEL을 활용한다.. 2025. 5. 13.
스프링 프레임워크 `@Async`를 알아보자 @Async를 사용하면 해당 메소드는 비동기로 실행이 된다. 반환값이 void거나, Future인 경우에만 비동기가 적용되며, 그 외의 경우에는 비동기로 실행되지 않고 무시된다. 스프링 프레임워크에서 제공하는 ListenableFuture와 Java 8 이후에서 제공하는 CompletableFuture도 비동기를 제공한다. 아래는 예시 코드이다.@Servicepublic class VirtualService { private final Logger logger = LoggerFactory.getLogger(VirtualService.class); @Async public CompletableFuture DoSomething(int n) throws InterruptedException {.. 2025. 5. 6.