본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

IT기술/spring44

[Spring] MVC에서 메시지 컨버터로 응답 만들기 Spring 에서 메시지 컨버터 라는 인터터페이스를 제공합니다. 이는 HTTP 메시지를 View 템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓰는 경우, HTTP 메시지 컨버터를 사용하면 편리합니다. 즉 Response의 정보에 body를 HTML이 아닌 json이나 특정 형식 데이터로 보내는데, 이를 메시지컨버터를 사용해 스프링에서 처리 해줍니다. 1. 스프링 MVC는 다음의 경우에 HTTP 메시지 컨버터를 적용합니다. HTTP 요청: @RequestBody , HttpEntity(RequestEntity) , HTTP 응답: @ResponseBody , HttpEntity(ResponseEntity) , package.. 2024. 2. 16.
[Spring] response 응답 한글 지원하도록 하기 Spring 으로 Response 를 테스트 하는 중에 request를 한글로 받았다면, 그대로 한글로 Response하는 방법을 정리해보려 합니다. 애플리케이션에서 받았을 때에도 한글이 나오는것은 확인되었으나, 응답을 postman에서 받았을 땐 한글이 깨져서 나옵니다. 이를 해결하기 위해선, 애플리케이션에서 response에 들어갈 헤더를 추가해줘야 했습니다. @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletInputStream servletInputStream = req.getInputStream(); String me.. 2024. 2. 14.
[Spring] Lombok 기능 생성자 자동생성, NoargsConstructor, RequiredArgsConstructor, AllArgsConstructor 정리 lombok은 getter, setter , 생성자 등 자동 생성을 지원해주는 기능입니다. 그중에서 NoargsConstructor, RequiredArgsConstructor, AllArgsConstructor 를 구분하는게 필요해서 간략하게 포스팅해보려 합니다. public class Board { private int age; private Long id; } @NoArgsConstructor 기본 생성자를 생성해줍니다. 이 경우 초기값 세팅이 필요한 final 변수가 있을 경우 컴파일 에러가 발생하니 주의해야 합니다. Board board = new Board(); // @NoArgsConstructor(force=true) 를 사용하면 null, 0 등 기본 값으로 초기화 된다. @NoArgsC.. 2024. 2. 11.
[Spring] Bean 수동 등록, 자동 등록 구분하기 스프링을 사용하다보면 Bean을 등록하는데 있어 크게 두가지 방법이 있습니다. 컴포넌트 스캔으로 의존관계 자동 주입을 사용 (클래스에 어노테이션을 붙여 컴포넌트 스캔을 활용하기) 설정 정보를 통해서 수동으로 빈을 등록하고, 의존관계 수동으로 주입 강의를 들어보면 스프링이 나오고 시간이 갈 수록 점점 자동을 선호하는 추세라고 합니다. 스프링은 @Component 뿐만 아니라 @Controller , @Service , @Repository 처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원합니다. 거기에 더해서 최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 스프링 부트의 다양한 스프링 빈들도 조건이 맞으면 자동으로 등록하도록 설계되었다고 합니다. 설정 정보를 기반으로 .. 2024. 2. 11.
[spring] postgre db JDBC 연결 테스트 부트 프로젝트를 만들고, local에 설치해둔 postgredb와 연결해보려 합니다. 프로젝트를 만들고 설정을 정리해두겠습니다.. 1. JDBC 연결하기 저는 42.6.0버전을 사용하려 합니다. 2. 프로퍼티에 정보 등록 # Postgresql spring.datasource.url=jdbc:postgresql://localhost:5432/ticket spring.datasource.username=userid spring.datasource.password=password # JPA spring.jpa.hibernate.dialect = org.hibernate.dialect.PostgreSQL10Dialect spring.jpa.hibernate.ddl-auto=update spring.jpa.pr.. 2024. 1. 23.
[spring] 스프링 부트 웹 프로젝트의 프론트 기술 thymeleaf란? 스프링 부트의 프론트단을 구성하는데 있어 여러 기술이 필요하며, 최근엔 vue.js 나 react.js 같은 기술이 사용된다. 만일 이를 사용하기 어렵다면, 부트스트랩 기반 만들어진 템플릿을 가져와 사용할수도 있다. 그러나 thymeleaf라는 기술을 이용해서도 웹페이지 구성이 가능하다고 하는데, 이게 도대체 무슨소릴까? https://www.thymeleaf.org/ Thymeleaf Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favour.. 2023. 7. 13.
[spring] SpringBootApplication, 스프링 부트 어노테이션 정리 springboot 관련 클래스 중에 springboot를 실행시키기 위한 main메소드에는 @SpringBootApplication 가 붙는다. 1 2 3 4 5 6 7 @SpringBootApplication public class SpringBootApplication { public static void main(String[] args) { SpringApplication.run(SpringBootApplication.class, args); } } Colored by Color Scripter cs 실행용 클래스 및 메소드와 별개로 SpringBootApplication의 설정파일도 클래스로 구현할 수 있다. 기존 Spring엔 config.xml 파일이나 프로퍼티 파일로 설정하는 경우가 대부.. 2023. 7. 13.
[spring] Logging Facade(로깅 퍼사드) 와 Logger(로거) Logging Facade : - 로거 API를 추상화해둔 interface (Commons Logging, SLF4j ) Logger : 로깅을 제공하는 class (Log4j, Log4j2, Logback (로거)) 스프링 부트는 Commons Logging 를 기본으로 사용 스프링 개발 당시 SLF4j가 없어서 하지만 최종적으로 Logback(SLF4j의 구현체) 으로 찍히게 된다. 스프링 부트 로깅 --debug (일부 핵심 라이브러리만 디버깅 모드로) --trace (전부 다 디버깅 모드로) 컬러 출력 : spring.output.ansi.enabled 파일 출력 : logging.file or logging.path 로그 레벨 조정 :logging.level.패키지 = 로그 레벨 커스텀 로그 .. 2023. 7. 13.
[spring]배너 바꾸기 https://devops.datenkollektiv.de/banner.txt/index.html Spring Boot banner.txt generator devops.datenkollektiv.de 스프링으로 작업는데 있어 빌드 후 실행시키면 제일먼저 콘솔창에 spring 배너가 뜬다. 이 스프링 배너 창을 변경할 수도 있다 스프링 부트는 기본적으로 resources/banner.txt가 존재하면 해당 텍스트를 기동 시 배너로 뿌려준다. 위 링크에서 배너파일을 만들고 경로에다 갔다놓으면 배너가 원하는데로 변경된다. 신기한 기능이다. 2023. 7. 11.
[Spring] ResponseEntity 사용하기, http 기반 응답 구현하기 Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다. 이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다. HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. 이번에 포스팅 할 ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다. 다만, Response를 출력하는 로직을 만드는데 있어 굳이 ResponseEntity를 쓸 필요는 없다. Spring에서 제공하는 도구이며, Response.. 2023. 6. 28.
[spring] 예외처리 @ControllerAdvice, @ExceptionHandler를 이용한 예외처리 분리, 통합하기(Spring에서 예외 관리하는 방법, 실무에서 활용하는 방법) 예외 처리 과정 프로그래밍에서 예외 처리는 아주 중요하면서도 아주 어렵다. 과하다할 만큼 상세하고 다양하게 예외를 잡아 처리해준다면, 클라이언트도 그렇고 서버도 그렇고 더 안정적인 프로그램이 될 수 있게 도와준다. 예외 처리를 하는 경우와 방법은 다양하다. 메서드 내에서 예외 상황을 예측해서 처리하는 try-catch문을 이용하는 방법 요구사항에 의한 예외 처리 (ex. validation > 특정 값이 0~255범위가 아니면 유효하지 않은 값으로 판단하고 예외 처리) 스프링 시큐리티에서 인터셉터로 잡아서 UnauthorizedException 같은 예외 처리 기타 여러 예외 처리들을 적용하다보면 코드가 엄청나게 복잡해진다. if문으로 잡든 try-catch로 잡든 상위 메서드로 예외처리를 위임하든 코드.. 2023. 6. 8.
[spring] logback 사용하기(slf4j 선언) logging 도구로써 최근에 자주 쓰이는 logback 을 사용하는 방법을 정리해보려 합니다. log4j에서 개선할 부분을 개선하여 만들어진 도구이며, 사용방법도 비슷합니다. spring boot에선 lombok으로 @Slf4j 선언해서 사용해도 됩니다. 그러나 처음 사용하는 입장에서 logger 객체를 선언해 사용하는 연습을 해보려 하기에 lombok을 이용하지 않고 직접 선언해서 사용하는 방식을 예시로 정리해봤습니다. logback의 특징을 간단히 정리해보면 다음과 같습니다. - 로깅과 동시에 파일로 로그 저장이 편리하다. - 로그레벨 관리를 appender 기준으로 할 수 있다. - 기존 log4j보다 성능, 로깅시간이 빠르다. 1. logger 선언 import org.slf4j.Logger; .. 2023. 6. 1.