본문 바로가기

분류 전체보기

(39)
내맘대로 git정리 git init -> 해당폴더에 git이 관리할 수 있는 폴더로 변경. mkdir 폴더명 -> 폴더만들기 make directory임 cd 폴더명 -> change directory 폴더이동 ls -> 해당폴더 파일목록 출력 ls -a -> 해당폴더 숨겨진파일목록까지 출력 대부분 . 이표시 되어있으면 숨겨진 파일or폴더임 vcs 특성상 저장공간을 논리적으로 분리(이게 이해가 안감. (나중에 알아보자)) 3가지로 나눌 수 있다. (working, stage, repository) 깃의 추적(tracked)의 개념. 깃이 다른 vcs보다 뛰어난 것이 추적이라는 개념을 사용해서 그렇다고 한다. 워킹디렉토리에서 "추적됨"과 "추적되지않음"의 상태로 구분을 지은다. untracked 실제 워킹디렉토리에서 파일을 ..
@Transactional(propagation) 비동기 동기 및 트랜잭션 전파에 대해 알아봅니다... 옵션설명 옵션 설명 REQUIRED 기본 옵션 부모 트랜잭션이 존재한다면 부모 트랜잭션에 합류, 그렇지 않다면 새로운 트랜잭션을 만든다. 중간에 자식/부모에서 rollback이 발생된다면 자식과 부모 모두 rollback 한다. REQUIRES_NEW 새로운 트랜잭션을 만든다. nested한 방식으로 메소드 호출이 이루어지더라도 rollback은 각각 이루어 진다. MANDATORY 무조건 부모 트랜잭션에 합류시킨다. 부모 트랜잭션이 존재하지 않는다면 예외를 발생시킨다. SUPPORTS 메소드가 트랜잭션을 필요로 하지는 않지만, 진행 중인 트랜잭션이 존재하면 트랜잭션을 사용한다는 것을 의미한다. 진행 중인 트랜잭션이 존재하지 않더라도 메소드는 정상적으..
스프링 스프링 프레임워크 3.1버전이긴 하지만 스프링의 기본적인 개념 및 매커니즘은 동일 시 하다고 느껴서 ... 이 책을 읽고 필요한 부분만 사용... 다 읽기에는 좀 더 너무 오래 걸릴꺼 같다.. bean : IOC가 생성,소멸 등으로 관리하는 오브젝트, 오브젝트라고 다 빈이라고 할 수 없다. beanFactory: 스프링컨테이너라고 볼 수 있다. 하지만 직접 사용은 하지 않으며, (applicationContext를 사용하지만, 최상위 계층이다.) 빈을 등록하며, 생성하고, 조회하며 등등으로 관리를 한다. applicationContext: beanFactory을 확장한 IOC 컨테이너이다.(beanFactory보다 더 추가된 기능) configuration Metadata: 스프링의 설정정보, IOC를 ..
N+1 (나만 알아듣는) 기존의 JPA를 이용하여 개발할때 잊어먹지않게 다시 작성... 이미 잊어먹음...가물가물하다. n+1의 문제는 일단 1하나의 쿼리를 예상하였지만 결과의 개수만큼 계속 쿼리가 던져(?)지는 문제점.... 책을 읽고 구글링을 해보고 보니까, 원인은 2가지로 크게 볼 수 있을 꺼 같다. 1. fetch 전략 2. Jpql (기본적으로 fetch 와 Jqpl에 대해 안다고.. 가정하에 작성) 하나 씩 살펴보자. (상상을 해보자 임의의 엔터티가 두개 있는데 서로 양방향 OneToMany ManyToOne의 관계이다.) 전략을 지연로딩(단일조회 기준) 으로 설정을 하였다고 하자. 임의의 하나의 엔터티에 조회를 하게 되면 (단일조회 기준) 지연로딩으로 인하여 하나의 엔터티에게만 조회를 하니까 n+1이 발생할리가 없다..
WebMvcAutoConfiguration WebMvcAutoConfiguration은 스프링부트를 사용하여 autoconfiguration을 적용하여 사용될때 스프링이 WebMvc에 관련된 설정인데 이제 사실 사용자가 애플리케이션 빈을 등록을 할때는 프론트단에 관련된 빈은 @Controller만 등록을 한 경우가 대부분인데 (추후에 나중에 interceptor, filter를 추가하는 경우말고) 암튼 바로 컴파일 후에 실행만 하면 디스패처 서블릿으로 바로 요청과 응답이 된다. 원래 로직인 RequestMapping , HandlerAdapter등등.. 빈으로 다 등록이 자동으로 되어있는데 이것은 일단 org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration에 자동설정에..
Spring 올바른(?)빈주입? 스프링을 이용하여 개발을 하면 무조건을 하는 의존성주입이 있다. 자바 객체를 스프링컨테이너가 빈으로 등록을 하면 이제 빈을 관리해주는 스프링컨테이너가 빈의 라이프사이클을 관리해준다. -> 알아서 싱글톤 패턴으로 관리가 되게 해준다. 사실상 스프링을 이용해서 개발을 하다보면 직접 new()를 하여서 개발하는경우는 빈등록이 되지 않은 경우 아닌 이상 없다고 생각한다... 이제 IOC과 DI의 개념이 들어오는데 항상 이 둘은 붙어있다... IOC는 무엇일까? inversion of Controll 제어의 역전이다... 개발자가 개발을 하는데 제어는 스프링컨테이너가 해준다. 무슨말일까? 스프링을 이용하여 개발 중에 빈으로 등록된 컴포넌트(빈)들의 객체 생성 및 소멸 등 알아서 스프링컨테이너가 해주겠다 이것이다...
스프링-시큐리티 SessionManagementFilter UsernamePasswordAuthenticationFilter다음으로 이번장을 다시 또 정리해본다... 이제 Authentication을 다 만들었다 SessionManagementFilter를 해보자 AbstractAuthenticationProcessiongFilter에서 sessionStrategy의 onAuthentication이 인증받은 객체로 실행한다. 로그인 인증 시도 시에 작동을 한다. 사용자 세션전략을 세우는 것이라고 보면 될 것이다. 시큐리티에서 세우는 세션전략은 4가지 이다. 세션관리 : 인증 시 사용자의 세션 정보를 등록, 조회, 삭제 등의 세션이력을 관리 동시적 세션 제어 : 동일 계정으로 접속이 허용되는 최대 세션수를 제한 세션 고정 보호 : 인증 할 때 마다 세션 쿠키를 새..
스프링-시큐리티 UsernamePasswordAuthenticationFilter 스프링에서 보안,인증,인가 등을 지원해주는 스프링 하위의 프레임워크이다. 일단 프레임워크이기때문에 어느정도 다 틀이 잡혀있어서 그에 맞게 설정 및 개발을 해줘야한다. (자주 잊어먹어서 정리를 하는글이지.. 기초부터 내용은 없습니다.. ) 기본적으로 서블릿필터가 서블릿 컨테이너에서 작동을 하고, 스프링 시큐리티는 스프링컨테이너에 있다. 그러면 어떻게 먼저 요청을 오는데 필터단에서 처리가 가능을 한 것일까..? 바로 서블릿 필터에서 스프링에게 요청을 위임을 해준다. 요청이 들어오면 먼저 서블릿컨텍스트의 필터단에서 설정된 필터가 차례대로 실행이 된다. 그때 DelegatingFilterProxy 클래스(요청을 위임하는거 빼고는 보안,인증,인가의 행위는 하지않는다.)를 이용을 해서 스프링 컨텍스트에 SPRING..