본문 바로가기

Dev/Spring11

스프링부트 logback 적용하기 기존에 스프링 부트 버전 업을 하면서 groovy로 작성된 logback파일을 xml으로 다시 재 작성할 일이 있었는데 직접 log 설정을 구성해본 적이 없어서 잠깐 삽질을 했었다. 기본 개념은 확실하게 알고 가자는 의미로 logback 설정 관련 개념을 간단하게 정리해보았다. 🌿 스프링부트에서 logback 사용하는 방법 스프링에서는 classpath 내에 있는 logback.xml 에서 설정을 해주는데 springboot에서는 resources 폴더 내에 설정 파일들을 관리하게 된다. 때문에 기본적으로 스프링 웹 애플리케이션이 시작되고 classpath 안에 있는 logback.xml을 읽어오는데, 이 때는 Spring이 구동되기 전이기 때문에 resources 폴더 내의 설정 파일들을 불러올 수 없.. 2022. 7. 24.
[SpringBoot] 테스트 케이스를 위한 설정파일 만들기 테스트 케이스를 위한 스프링 환경과, 일반적으로 애플리케이션을 실행하는 환경은 다르기 때문에 설정 파일을 다르게 사용하는 것이 바람직하다. 실습을 위해 간단하게 테스트환경을 위한 인메모리 디비 접속 정보를 담은 설정 파일을 생성해보자. (사실 스프링부트에서는 설정 파일이 없으면 기본적으로 DB를 메모리 모드로 돌려버리기 때문에 별도의 설정이 필요 없다.) 먼저 java 디렉터리에 있는 설정 파일이다. spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: #.. 2022. 2. 10.
[SpringBoot] JUnit5 - @ParameterizedTest, @ValueSource, @CsvSource @ParameterizedTest JUnit5에서 추가된 새로운 기능 중 하나이다. 매개변수를 사용해서 단일 테스트를 여러 번 실행할 수 있다. 먼저 @ParameterizedTest 를 사용하기 위해서는 pom.xml / build.gradle 에 Junit-jupiter-params의존성을 추가해주어야 한다. Maven 의존성 추가 org.junit.jupiter junit-jupiter-params 5.7.0 test Gradle 의존성 추가 testCompile("org.junit.jupiter:junit-jupiter-params:5.7.0") Example public Class Example{ private set numbers; @BeforeEach void setUp() { numbers.. 2022. 2. 5.
[SpringBoot] 스프링부트에서 캐싱하기 (Cache in Springboot) Cache 메인 화면에 뿌려지는 공지사항과 같이 데이터 변경이 잦지 않고 반복적으로 같은 데이터를 조회할 경우에 매번 DB에 접근해서 가져오는 것은 효율적이지 못하다. 때문에 이러한 데이터들을 캐싱 작업을 함으로써 매번 DB에 접근하지 않고 빠른 속도로 데이터를 뿌려줄 수 있다. Caching annotation @Cacheable : 캐시 저장 @Cacheput : 캐시 갱신 @CacheEvict : 캐시 삭제 기본적으로 캐싱 어노테이션은 Spring AOP를 통해 처리된다. 주의사항 pulbic method에만 사용가능 같은 객체 내의 method끼리 호출 시에는 @Cacheable이 설정되어있어도 캐싱되지 않음 스프링 부트에서 캐시 사용하기 캐시 의존성 추가 org.springframework.bo.. 2022. 2. 5.
[Spring] Filter, Interceptor 필터와 인터셉터는 컨트롤러가 호출되기 전 요청과 응답을 가로채서 공통 로직을 수행한다. 순서 Filter → Interceptor → AOP → Interceptor → Filter Filter 스프링 컨텍스트 외부(DispatcherServlet 앞 단)에서 request와 response의 해당하는 작업을 가로채어 공통 로직을 수행 웹 어플리케이션에서 전역적으로 처리해야 하는 로직을 구현 HTTP 요청과 응답을 변경할 수 있는 재사용이 가능한 코드 web.xml 또는 어노테이션으로 필터를 설정/매핑할 수 있다. method init(FilterConfig filterConfig) : 필터가 생성될 때 초기화 시 사용 doFilter(ServletRequest request, SevletResponse.. 2022. 2. 5.
[Spring] AOP(Aspected-Oriented Programming) AOP(Aspected-Oriented Programming) 스프링과 별개로 방법론이다. OOP는 사용자 관점에서의 주 업무 로직을 위주로 구현하는 것. 반면 AOP는 주 업무 로직을 구현함에 있어서 개발자나 운영자 및 관리자가 필요에 따라서 코드를 끼워 넣게 되는 부가적인 기능(ex. 로그 처리, 트렌젝션 등...)을 모듈화 하는 것. 즉, 사용자 관점, 개발자 관점, 운영자 관점, 등등..여러 관점들을 고려해서 로직을 분리하고 모듈화 하는 방법론이기 때문에 Aspected 관점 지향적 프로그램이 이라고 한다. Concern - Primary(Core) Concern & Cross-cutting concern primary(Core) Concern : 핵심 로직 Cross-cutting Concern.. 2022. 2. 5.
반응형