본문 바로가기

웹 개발13

톰캣의 구조와 Connector 설정 값 Tomcat의 구조 Server: tomcat의 최상위 인터페이스로 전체 컨테이너를 표현한다. Service: Server 안에 존재하며 Connector와 Engine을 연결해준다. Engine: 실제 요청을 처리하는 역할을 담당한다. Connector를 통해 요청을 받아 이를 처리한 후 응답을 보낸다. Host: 네트워크 이름을 나타낸다. Connector: 클라이언트와의 커뮤니케이션을 담당한다(이름 그대로 Connection을 처리한다). Context: Web application을 표현한다. 톰캣 튜닝을 할 때 우리가 주로 살펴볼 곳은 Connector이다. Connector의 주요 역할은 브라우저로부터 TCP 커넥션을 받아 Request, Response 객체를 생성하여 쓰레드가 이를 처리할 .. 2022. 9. 11.
deleteAllByIdInBatch는 영속성 컨텍스트를 동기화하지 않는다 (feat.문서를 잘 읽자…) delete 관련 기능을 개발하다가 trouble shooting(?)한 경험을 간단히 공유합니다. JpaRepository의 deleteAllByIdInBatch 메서드를 사용하는 서비스 코드를 테스트하는 과정에서, 분명 delete 쿼리가 로그에 찍히는데 findById로 조회를 하면 데이터가 남아있는 문제가 있었습니다. 이해하기 쉽게 예시를 다시 구성해보면 @Test void Space삭제() { Host host = hostRepository.save(Host_생성("1234")); Space space = spaceRepository.save(Space_생성(host, "잠실 캠퍼스")); Job job1 = jobRepository.save(Job_생성(space, "청소")); Job job.. 2022. 7. 18.
Singleton Scope 빈에 Request Scope 빈을 주입받고 싶다면… (Scoped Proxy Bean) 문제 상황 프로젝트 도중 singleton scope 빈에 request scope을 주입해서 사용해야 할 상황이 생겼다. 아래와 같이 인가 처리를 위한 커스텀 인터셉터에서 인증 정보를 담아두는 객체를 주입받아 사용해야 했기 때문이다. @Component public class AuthenticationInterceptor implements HandlerInterceptor { private final AuthenticationContext authenticationContext; ... @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Excep.. 2022. 7. 13.
[Spring] 스프링 이벤트를 활용하여 서비스 간의 의존성 제거하기 작년 12월 19일에 진행한 유스콘에서 스프링 이벤트 처리에 대한 세션이 있었는데요, 내용이 너무 좋아서 포스팅으로 정리하며 제대로 이해해보고자 합니다. 반태형님이 지식 공유를 해주셨고 예제 코드는 여기서 확인하실 수 있습니다. 스프링 공식 문서에서 이벤트에 관한 내용을 참고하고 싶으시면 여기를 보시면 됩니다. 애플리케이션을 만들다보면 아래처럼 서로 다른 서비스 간에 의존성이 발생하는 경우가 생깁니다. @Service public class UserService { private final UserRepository userRepository; private final AdminService adminService; private final EmailService emailService; private .. 2022. 2. 5.
[스프링 시큐리티] 스프링 시큐리티의 구조를 살펴보자! 스프링 시큐리티의 구조 스프링 시큐리티는 웹 애플리케이션의 인증과 인가 및 그 외 일반적인 웹 공격에 대한 방어를 제공하는 스프링의 하위 프레임워크이다. 인증: 내 신원을 확인하는 과정 인가: 내가 특정 리소스에 접근할 권한이 있는지 확인하는 과정 스프링 시큐리티는 주로 서블릿 필터와 이들로 구성된 필터체인을 통해 웹 요청에 대한 보안 관련 처리를 수행한다. 서블릿 필터란 HTTP 요청을 가로채 전처리 및 후처리를 수행할 수 있도록 만들어진 자바 표준 기술이다. 필터는 체인으로 구성될 수 있으며, 하나의 필터가 자신의 역할을 한 후 요청과 응답 객체를 다음 필터로 넘길 수 있다. public void doFilter(ServletRequest request, ServletResponse response,.. 2021. 11. 23.
[SpringMVC] 스프링 MVC의 구조를 이해해보자 (3/3) V4: 사용하기 쉬운 컨트롤러 지난 포스팅에서 만든 V3는 분명 좋은 설계이지만 컨트롤러 인터페이스를 개발하는 개발자 입장에서 매번 ModelAndView를 생성하고 반환하는 것이 번거로울 수 있다. 그래서 이번에는 개발자가 사용하기 편한 컨트롤러를 만들어본다. 기본적인 구조는 V3와 같다. 하지만 프론트 컨트롤러가 컨트롤러를 호출할 때, paramMap 뿐만 아니라 객체를 담을 model을 추가적으로 전달한다는 것, 그리고 컨트롤러가 ModelAndView를 반환하는 것이 아니라 viewName만 반환한다는 차이가 있다. 프로세스 또한 V3와 크게 다르지 않다. 다만 Controller가 더이상 ModelAndView를 반환하지 않고 String을 반환한다. model 객체는 프론트 컨트롤러에서 파라미.. 2021. 7. 30.