본문 바로가기

분류 전체보기

(39)
스프링 aop 스프링 AOP는 Aspect Oriented Programming의 약자이며, 관점 지향 프로그래밍입니다. 관점 지향 프로그래밍의 "관점 지향이란" 크게 핵심적인 관점과 부가적인 관점으로 나누어서 각각 모듈화를 하겠다는 것입니다.(관심사 분리) 예를 들어보자. 한 개발자가 개발 중에 있는데, 갑자기 모든 호출되는 메서드의 소요시간을 알고 싶다며, 모든 메서드에 소요시간을 구하는 로직을 구현을 해야 한다.. 메서드가.... 1만 개라면..? 할 수야 있겠지만 엄청나게 오래 걸릴 것이다.. 이런 식으로 개발을 하게 된다면..? 중복 코드 발생 -> 모든 코드에 똑같이 반복되는 코드가 생긴다. 흩어진 관심사(Crosscutting Concerns) 핵심 로직과 부가적인 로직으로 인하여 service단에서 핵심..
Interceptor 예외처리 스프링에서는 filter,aop,interceptor가 존재하는데 다 쓰임이 다르다. filter는 서블릿에서 관리를 하는 필터이기때문에 dispacherServlet에 받기 전에 처리하기 때문에, aop,interceptor보다 먼저 그 전에 앞단에서 처리를 해준다. aop와interceptor와는 dispacherServlet 후에 처리를 하기 때문에 비슷은 하지만 사용하는 용도와 로직이 좀 다르다. 일단 스프링을 하면 기본적으로 다들 알겠지만.. 또 까먹을까봐 그림을 머리속에 기억하자.. 기본적으로 filter,aop,interceptor와 대해 어느정도 안다는 전제하에 글을 쓴다... 이 글은 위에 3개에 대해 다루는 것은 아니고 interceptor의 예외처리 범위에 대해 알아볼려고 하는 것이다..
스프링 배치 스프링 배치에 대하여 정리하는 글을 가져보도록 합니다... 정리를 하는 글이며.. 틀릴 수가 있으니 어느 정도 감안하시며 보시는 걸 추천합니다. 작성된 코드는 github 에서 볼 수 있습니다 스프링 배치를 도입하는 경우는 (아무래도 모든 시스템에 배치시스템이 적용되지 않았을까.. 생각이 든다) 기본적으로 프로그램에서 큰 단위의 작업을 일괄처리를 해야 하는 경우. 실시간을 필요로 하지 않는 경우의 작업에 사용된다 ex) 통계, 정산 등등.. 컴퓨터 자원을 최대로 활용을 한다. 비교적 사용자가 적은 즉 자원 사용량이 적은 시간대에 사용을 하여서 이용한다. 사용자가 직접 실행이 아닌 스케줄러를 이용하여 실행한다 ex) 매일 오후 4시 실행, 매달 1일 실행, N분 간격으로 실행 등등.. 위에 사진을 참고하여..
세션관리 스프링시큐리티로 개발 및 공부중에 중복로그인에 대해서 알아보았습니다. ConcurrentSessionFilter가 존재하는데 private void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { HttpSession session = request.getSession(false); if (session != null) { SessionInformation info = this.sessionRegistry.getSessionInformation(session.getId()); if (info != null) { if (info.is..
DispatcherServlet ServletContainer SpringContainer 스프링부트를 이용해서 혼자서 공부겸 개발을 하다가 보니까 각종 에러나 예외에 대해 맞닥드리게 되는데.. 전체적인 구조에 대해 이해도가 없어서 에러내용을 봐도 감이 오질 않았다.. 사실 전 yoon9.tistory.com 위에 저번글에서 다룬 내용중 서블릿에 대해 정리를 해보았습니다.. 근데 저는 개발을 하면서 스프링부트를 주로 이용하였지만 스프링프레임워크도 한 번 경험이 있엇는데.. 위에 글의 내용과 같이 web.xml에서 각 서블릿에 맞는 매핑을 설정을 해줘야한다고 했는데.. 그런적은 한 번도 없고 dispatcherServlet를 사용하였다 그럼 dispatcherServlet는 뭘까..? 스프링MVC에서는 dispatcherServlet를 ..
ServletContainer SpringContainer 스프링부트를 이용해서 혼자서 공부겸 개발을 하다가 보니까 각종 에러나 예외에 대해 맞닥드리게 되는데.. 전체적인 구조에 대해 이해도가 없어서 에러내용을 봐도 감이 오질 않았다.. 사실 전체적인 구조에 대해 공부를 해놨지만.. 계속 코딩을 하고 스프링부트 자체가 기본적으로 제공을 해주는 것이 많아서 까먹게 되어서 복습겸 정리를 할려고 이 글을 정리를 해야겠다.. 처음으로 ServletContainer 와SpringContainer을 이해하기 전에 WebServer와 was(WebApplicationServer)에 대해 간단히 이해를 해보자 WebServer는 정적 데이터만 전달을 하는 webServer이다. 기본적으로 client에 requset를 받아서 정적인 컨텐츠 예를 들어(css,html)등등..을..
디자인 패턴 - 생성패턴 -Builder 디자인 패턴 종류 -Factory Method -Abstaract Factory -Builder -Singleton -ProtoType -Builder 패턴 프로그래밍 중에 자주 사용되는 패턴이다 대부분 class 설계시에는 인수들이 적을 경우에는 생성자로 객체를 생성시에는 생성자를 1~5개 정도로 적게 만들 경우에는 프로그래밍중에 별 상관이 없다고 느껴진다 하지만, 인수들이 많아지고 필수로 받아야 하는 인자와 필수가 아닌 선택적인 인자들을 받아야 하는 경우와 생성자의 경우의 수가 많아질 경우에는 가독성이 떨어지고, 인수가 많아지는 경우에는 생성자를 만 들 경 우에 인수의 타입이 같을 경우에는 어떤 부분에 인수를 받아야 했는지 헷갈리는 경우가 많아진다. 이럴 경우에는 빌더 패턴을 이용하자. user.ja..
디자인 패턴 - 생성패턴 -Abstaract Factory 디자인패턴 생성패턴의 종류 -Factory Method -Abstaract Factory -Builder -Singleton -ProtoType 이전에 다룬 Factory Method else-if나 switch-case를 사용하여서 서브클래스의 객체를 생성을 하였습니다. 하지만, -Abstaract Factory 패턴에서는 달리 else-if나 switch-case 없애고 전에 글과 달리 public class PhoneFactory { public Phone getPhone(String company){ switch (company){ case "apple": return new Iphone("Iphone", "128G"); case "samsung": return new SamsungPhone("s..