본문 바로가기

개발/스프링부트5

@SpringbootApplication의 baseScanPackage 설정 이슈 이슈상황로컬에서 코드 수정하고 springboot 구동했을 때 애플리케이션은 띄워짐그런데 aws에 배포하니까 health 체크 실패하고 이벤트 수신도 못함Controller를 정의하여 /health api 호출 시 200응답 보내는 코드가 있음에도 health 체크 실패.AWS 설정에서 health 체크 path도 /health로 설정되어 있는 부분 확인하였음.이벤트 수신관련한 코드도 건드린적 없음.원인현재 패키지가 com.example.a 이고, com.domain에 있는 컴포넌트를 의존성주입 받을 일이 있어 @SpringbootApplication(scanBasePackages={"com.domain"})을 사용이 설정을 하고 Springboot 구동하니까 구동은 잘되는데, com.example.a .. 2024. 7. 13.
@Transactional 사용시 주의점(feat.AOP,Proxy) 트랜잭션은 ACID를 보장하기 위한 중요한 요소이다. 스프링에서는 @Transactional 을 메서드, 클래스 단에 지정하면 쉽게 트랜잭션을 적용할 수 있게 한다. 그런데 이렇게 쉽게 사용할 수 있는 @Transactional에도 주의할 점이 필요하다. 스프링으로 웹 개발을 한지 꽤나 되었다고 생각했는데, 지금까지 이러한 주의점을 모르고 있었다. 왜냐하면 이 주의점은 꽤나 깊은 지식을 이해해야 파악할 수 있는 부분이기 때문이다. 일단 시나리오를 두 가지 준비해 보았다. Scenario 1. 같은 클래스 내에서 트랜잭션이 적용되지 않은 메서드 A가 트랜잭션이 적용된 메서드 B를 호출하고 있다. 외부에서 A를 호출했다면 B는 트랜잭션이 제대로 동작할까? @Service public class Product.. 2022. 11. 13.
서블릿 MVC 와 스프링 MVC 비교하기 Servlet 환경의 MVC를 살펴보고, 스프링과 비교해보자. Servlet Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술 Tomcat : 자바 서블릿 컨테이너 = 서블릿을 갖고 있고 서블릿을 적절히 관리하는 애로 생각하면 된다! Servlet 주기 init() 톰캣이 서블릿이 생성되면 init() 메소드를 실행하여 서블릿을 초기화함 서블릿 생성 시 최초 1번 실행 service() request를 처리하는 메소드 destroy() 서블릿을 제거할 때 실행되는 메소드 보통 서버가 종료될 때 실행됨 Servlet 주기 테스트 - 톰캣 설정파일에 Servlet 등록 newmadamequery index.html CorinneServlet controller.C.. 2022. 6. 4.
@Component, @Controller, @Service, @Repository의 차이 학습 동기 계층별로 해당 어노테이션을 구분하는 이유가 궁금하여 학습하게 됨 공식문서 파헤치기 @Component 와 다른 정형화된 annotation들 @Repository는 레포지토리(데이터 접근 객체로 알려져 있는)의 정형화 또는 역할을 하는 클래스를 위한 어노테이션이다. 많은 사용법 중 가운데 이 어노테이션은 Exception Translation에서 묘사된것처럼 자동으로 예외를 변환한다. 어떤 예외를 어떻게 변환한다는 것일까? 낮은 레벨의 영속성 예외를 높은 레벨의 스프링 예외로 변환한다는 것이다. Spring은 우리가 선택한 선택한 ORM 툴(JPA, Mybatis 등)로 부터 일반적인 데이터 접근 예외들을 감쌀 수 있다. Checked exception들을 일반적인 런타임 예외인 DataAcc.. 2022. 5. 8.