BackEnd/Spring5 프록시 패턴과 @Transaction 동작원리 "@Transaction만 붙으면 자동으로 트랜잭션이 동작하는데 이거 신기하지 않으세요" 멘토링 중 멘토님이 말씀하셨다. 물론 신기하다 허나 왜 그런지 고민해본적이 있었던가.. 그냥 당연하듯이 동작할거라는 생각 하에 어떤 원리로 동작하는지에 대한 고민이 부족했기에 공부를 다시 시작했다이 부분에 대한 깊은 동작 원리나 공부는 추후 토비의 스프링을 공부할 때 배워야겠지만 지금 단계에서는 먼저 프록시 패턴과 트랜잭션이 프록시 패턴과 어떤 연관관계가 있는지 공부해보았다 Proxy Pattern대상 원본 객체를 대리하여 로직의 흐름을 제어하는 행동원본 객체의 수정 없이 제어가 가능하다구현 코드public interface IUserController { User login(String id, String p.. 2024. 11. 7. 스프링/자바 동작 순서 멘토링 질문 중 “서버에 Request가 발생했을 때 가장 높은 수준부터 가장 낮은 수준까지 설명해보세요(스프링/자바 기준)” 생각보다 쉬운 질문이지만 막상 말로 설명하려니 어려웠다. 대략적인 그림은 이해하고 있었으나 실제로 동작원리를 완벽히 이해하고 있진 않았다.그래서 이번에 한 번 정리하고자 한다 1. HTTP/HTTPS 요청클라이언트 웹브라우저 또는 HTTP 클라이언트가 요청을 보냅니다이때 DNS서버를 통해 아이피를 확인 후 Request 요청합니다요청은 대체로 Tomcat 같은 서블릿 컨테이너에서 수신합니다 더보기서블릿 컨테이너웹서버 정적인 요청만 처리할 수 있어서 서블릿과 상호작용하는 컨테이너서블릿servlet 패키지에서 정의된 인터페이스로 init, service, destory 생명 주기.. 2024. 10. 7. [Spring] 스프링 MVC Dispatcher Servlet Spring MVC에서는 첫 URL 요청 후 Controller로 바로 수행하지 않는다 FrontController 역할을 하는 Dispatcher Servlet이 상당히 많은 역할을 담당하고 있다. 공식 홈페이지에도 다음과 같은 워크 플로우를 제공해주고 있다. 요청이 들어올 경우 아래와 같이 Dispatcher Servlet이 동작하는데 중요 기능에 대해서 디버깅을 통해 접근해보고자 한다. MVC 디스패처 서블릿 순서 브라우저는 특정 URL을 보내며 디스패처 서블릿이 이를 받는다 이를 처리할 올바른 컨트롤러를 식별한다 핸들러 매핑은 요청을 처리하는 특정 핸들러메서드를 반환 한다 디스패처 서블릿은 특정 핸들러 메소드를 호출한다 모델과 뷰를 반환한다 디스패처 서블릿은 사용 가능한 뷰 리졸버가 있는지 확인하.. 2023. 4. 5. 애노테이션으로 유효성 검토 자바 스크립트를 통해서 유효성 검토 또한 중요하지만 클라이언트 상에서 자바스크립트 변조가 가능하기 때문에 중요한 데이터에 대해서는 검증이 필요하다 서버에서 일일히 코드로 검증하는 방법이 있지만 spring에서 제공하는 @Valid를 통한 검증을 소스에 적용해보았다. 의존성 추가 gradle에 다음과 같이 의존성을 추가한다 implementation 'org.springframework.boot:spring-boot-starter-web' Hibernate validator에 대한 설명은 다음 블로그에서 잘 설명하고 있다.링크 JavaBean Validation과 Hibernate Validator 그리고 Spring Boot | Popit 이 글은 JavaBean Validation(이하 Bean Val.. 2022. 12. 19. 스프링 빈의 멤버변수는 ThreadSafety하지 않다. 스프링을 사용하면 많은 부분을 스프링 프레임워크과 라이브러리에 의존하고 강하게 믿는다. 또한 왜인지 스프링이 모두 해결해줄 것 같은 느낌을 받는 듯하다. 특히 빈으로 생성된 객체는 ThreadSafety하다는 착각을 하게되다보니 가끔 실수로 이런 코드를 생성한다. 파일을 관리하는 클래스 @Component public class FileManager { private String fileName; private String filePath; ... getter/setter 생략 } @Service public class FileService { @Autowired FileManger fileManager; ... 파일 관련 메소드 } 운영서버에서는 클라이언트에서 파일을 저장했음에도 간헐적으로 파일이 저장.. 2022. 12. 19. 이전 1 다음