-
MyBatis와 JPA 함께 사용할 때 설정Spring Boot/JPA 2024. 6. 14. 20:38
# Configuration 등록아래와 같이 @Configurateion에 @Bean으로 등록해서 함께 사용 가능하다. package com.bookMngr.common.config.mybatis;import lombok.RequiredArgsConstructor;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.type.JdbcType;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springfr..
-
어노테이션 생성해서 Bean 컨테이너 생성 자체 관리하기Spring Boot 2024. 1. 10. 18:39
# 어노테이션 생성 어노테이션은 아래와 같이 생성하면 된다. @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE , ElementType.METHOD}) @Import(ImportsBeanSelector.class) public @interface EnableBizHelper { } # Retention (어노테이션의 생명주기를 담당) RetentionPolicy.SOURCE 소스 코드(.java)까지 남아있는다. 컴파일해서 .java -> .class 로 변경되면 .class에서는 해당 어노테이션이 사라지고 어노테이션에 해당하는 소스가 생성 될 것이다.(예시 : @Getter) RetentionPolicy.CLASS 클래스 파일(.class)까..
-
RestTemplate의 Response 결과 값 자동 매핑하기Spring Boot/MVC 2023. 11. 25. 20:54
# RestTemplate의 exchange 메소드 아래와 같이 여러 인자값들이 있다. public ResponseEntity exchange(String url, HttpMethod method, @Nullable HttpEntity requestEntity, Class responseType, Object... uriVariables) # 4번째 인자값인 responseType을 통해 결과값을 반환받는 방법 아래와 같은 구조를 가진 객체를 생성하면 된다. 내부적으로 MessageConverter를 동작시켜 같은 변수명을 가진 필드들을 매핑시켜준다. public class ResponseVO { private Integer status ; private String code ; private Strin..
-
[JPA] 파라미터 바인딩 로그 보기Spring Boot/JPA 2023. 10. 22. 18:50
JPA에 로깅이 필요한 이유? JPA를 사용하다보면 파라미터의 값이 아래와 같이 물음표로 나온다. 실제로 어떤 값이 할당돼 들어갔는지 확인이 필요한 경우에 필요하다. select e1_0.id, e1_0.name, e1_0.salary from s_emp e1_0 where e1_0.id=? or e1_0.name=? order by e1_0.id desc,e1_0.name limit ?,? 환경 JPA 3.1.4 Spring Boot 3.1.3 Java 17 yml 설정 logging: level: org.hibernate: orm: jdbc: bind: trace 결과 위 사진처럼 trace 레벨로 로깅이 남는 것을 확인할 수 있다.
-
AOP 용어 및 적용 방법Spring Boot/AOP 2023. 10. 22. 18:47
AOP 사용 이유 소스코드는 크게 두 가지 형태인 비즈니스 영역과 부가기능 영역(로깅, 보안, 트랜잭션)으로 나뉜다. 반복되는 부가기능 영역을 유지보수 좋게 하나의 모듈로 만들어서 사용하면, 반복되는 소스코드가 줄어든다. "반복되는 소스코드가 줄어든다." 라는 말의 의미는 유지보수가 좋아진다. 라는 의미. 즉 한 마디로, AOP 쓰는 이유 ==> 개발자들은 비즈니스 영역에만 집중할 수 있고 부가기능 영역은 AOP로 분리하여 유지보수 좋은 환경을 구축할 수 있다. AOP 용어 정리 Target 부가기능을 부여할 대상 Advice 부가기능을 담고 있는 모듈 Join Point 어드바이스가 적용될 수 있는 위치 Pointcut 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식이다. (하단의 그림 참고) ..
-
Spring Boot Starter별 차이점Spring Boot/MVC 2023. 10. 22. 18:33
spring-boot-starter-web Spring MVC를 사용하는 전형적인 REST api Service spring-boot-starter-jersey JAX-RS의 Jersey 구현을 사용하는 REST 서비스 ※ JAX-RS : 자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API이다. spring-boot-starter-web-services SOAP를 지원하는 서비스 출처 : https://stackoverflow.com/questions/39972171/difference-between-spring-boot-starter-web-and-spring-boot-starter-web-services
-
SpringBoot에서 Scheduling 사용하기Spring Boot 2023. 10. 22. 17:55
스케줄링은 특정 시간 동안 작업을 실행하는 프로세스이다. Spring Boot를 통해 Spring에서 지원하는 스케줄러를 간편하게 작성할 수 있다. 스펙 요구사항 Schedule 기능 켜기 자바 설정(Java configuration) 관련 클래스에 @EnableScheduling 를 추가하면 기능을 사용할 수 있다. package com.example.schedulingtasks; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableSchedul..
-
스프링부트 3.0으로 전환Spring Boot 2023. 10. 22. 17:49
개인 프로젝트를 수행하면서 스프링 3.0을 적용했었는데,,, 기존의 방식과의 호환성 문제로 여러 애를 먹었었다. 어떤 점들이 바뀌었는지 정리를 해두면 좋을 것 같아서 정리를 미리 해두려고 한다. Upgrade to Java 17 스프링부트 3.0 버전부터는 자바 17버전을 필요로 한다. Upgrade to the Latest Spring Boot 2.7.x 스프링부트 2.7부터 마이그레이션을 한다는 가정하에 마이그레이션 가이드를 제공한다. Check for Calls to Deprecated Code Deprecated된 코드들을 확인해야한다. 12개월의 기간을 주고, 그 이후에는 삭제시켜버린다... Migrate from Legacy application.properties and application..
-
@ConfigurationProperties 사용법Spring Boot 2023. 10. 22. 17:14
.properties , .yml 파일에 있는 property를 자바 클래스에 값을 가져와서(바인딩) 사용할 수 있게 해주는 어노테이션 Spring boot 에서는 운영에 필요한 설정(DB 정보, LOG설정 등등 )들을 .properties , .yml 에 써두고 관리한다. 위 그림과 같이 yml 파일이 설정돼 있고, 아래 그림처럼 설정을 하면 톰캣 서버 실행시, spring이 Component Scan할 때, 아래의 클레스와 변수들에 값을 세팅시켜준다.
-
@Bean vs @Component 차이점 및 사용법Spring Boot 2023. 10. 22. 17:10
스프링에서 빈으로 등록하는 방법 스프링 MVC에서는 @Controller, @Service, @Repository 등으로 빈으로 등록이 가능하다. configuration 관련 객체들은 @Bean과 @Component로 스프링 컨테이너에 객체를 빈으로 등록할 수 있다. 그럼 @Bean 과 @Component의 차이는 무엇일까? @Bean은 메소드 레벨에서 선언하며, 반환되는 객체(인스턴스)를 개발자가 수동으로 빈으로 등록하는 애노테이션이다. 반면 @Component는 클래스 레벨에서 선언함으로써 스프링이 런타임시에 컴포넌트스캔을 하여 자동으로 빈을 찾고(detect) 등록하는 애노테이션이다. @Bean 사용 예제 @Configuration public class AppConfig { @Bean publi..