Java/Spring MVC

[20.09.25 SpMVC_ReadBook] security-context, web.xml 파일 코드 해석, @RequiredArgsConstructor

우롱차 2020. 10. 5. 14:08
728x90

'     ~~/read'

우리 전체 프로젝트를 하게되면 

객체, 클래스들을 지정하는 곳임 context parameter

컨텍스트가 실행된 다음에

 

appServlet은 자바 서버로 만든것이다라는 키워드

여기는 내가 코딩하는 것에 대한 설정들이 들어있는 코드

 

문지기 역할 : DispatcherServlet

<init-param> : 초기화 값

어떻게 구성되는지 알려주는 .xml에 들어있다 이런 이야기

 

우리는 아무것도 없지만

~~.do 이런게 잇으면  그 페이지만 

보안에 관련

네이버는 ~~.nhn이라는 접미사를 붙이기도한다.

 

security에서는 enKor한글인코딩에 제일 먼저 나와야한다

 

<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

 

DelegatingFilterProxy 찾아가기

 

DI : 제어의 역전 내가 필요한 클래스를 누가 주입을 해주는게 인젝션

디펜던시 인젝션

Proxy :  내가 프로젝트를 수행할 때 뭐가 필요한지 감시하고 교통정리하고 하는 그런 기능들을 통틀어서 부르는 단어

Deleagating(대리자) 뭔가요청을하면 저 친구한테 보내는거 

springSecurityFilterChain : 이 객체가 어딘가에 있을 거

 

mvc 패턴 : 클래스같은거를 이용해서 (우리가 기본적으로 만드는 프로젝트)

 

simple security 프로젝트는 스프링프로젝트의 가장 간단한!! 다 삭제하고 webapp에 index.jsp만 있음

 

>> web.xml


 

어디 거치지말고 걍 보내부러라 ~ 

컨트롤러 서비스 패키지 

 

 

마이바티스도 이러이러한접근을 통해 사용하게 해주는

 

>> *-context.xml


<bean  class="org.springframework.jdbc.datasource.DataSourceTransactionManager"></bean>

트랜잭션을 대신해주는 친구

에시큐엘세션템플릿도 같이

<tx:annotation-driven/>

이것도 같이 사용해주고
컨트롤러 메소드에 어노테이션@Transactional 이걸 붙여준당!

>> mybatis-context.xml

 


root-context와 같은 역할을 하는 bean Configuration 파일을 만들어줌

 

>>security-context.xml


스프링 시큐리티에는 사용자 테이블이랑 권한테이블이 나눠져잇다

 

한사람에게 다수의 권한을 부여해서 여러가지역할을 수행할 수있게

1 : n 의 테이블을 만들어야함


 

이 메서드는 오라클 유저네임이랑 패스워드를 입력하면

 

 

암호화시켜서 파일을 아예 만들어줌!!!

 

 

디비에 보낼때는 다시 복호화 시켜서 보내야함

다시 복호화 시켜서 보내는 건 mybatis-context.xml에 bean들을 생성해줌

 

>> exec/ MakeDBSecurity


이 클래스를 사용하는 동안에만 사용하는 환경변수

속여주는거임

 

>> exec / EnvList


final 을 붙이면 상수가 됌

관리가 쉬워짐

생성자를 대신 만들어주는 친구

@RequiredArgsConstructor

클래스 위에 붙여줌

 

@autowired보다

메모리 누수현상이 없고 더 안정적인 코드다 

 

@Slf4j
@RequiredArgsConstructor
@Service("userDetailServiceV1")
public class UserDetailServiceImplV1 implements UserDetailsService {
    /*
    * 그동안 Autowired를 사용하여 객체를 주입받아서 사용해 왔는데
    * @Autowired로 주입받은 객체에 메모리 누수현상이 발생을 하더라
    * 
    * 주입받을 객체를 final로 선언을 해주는데
    * final로 선언한 객체는 반드시 생성자에서 객체 초기화(주입)을 해야한다
    * 
    * 1. 주입받을 객체를 final로 선언하고
    * 2. 생성자의 매개변수를 통하여 객체를 초기화 한다.
    * 3. 주입받을 객체의 갯수가 늘어나거나 줄면
    *  생성자를 또다시 변경해야하는 번거로움이 있다.
    * 
    * lombok의 @RequiredArgsConstructor 를 사용하면
    * final로 선언된 모든 필드변수들을 모아서 생성자로 만들어준다. 
    *  >> 훨씬 더 세련된 코드
    */
    private final UserDao userDao;
    private final AuthorityDao authDao;

>> auth / UserDetailServiceImplV1

 

728x90