[Spring] springframework 적용 구현

Spring MVC

  • 스프링이 제공하는 서블릿 기반의 MVC

20210430_094224

req 받으면 디스패쳐 서블릿이 받고 어떤 컨트롤러가 받는지 보고 그 매핑 과정이 대체 되었는지 보고 디스패쳐 서블릿이 받아서 그거가지고 체크한다.

20210501_024701

쿼리 들어있는게 매퍼파일(mapper File)에 들어있ㅅ다 이 쿼리마다 id가 붙어있다.(쿼리마다) 서로 다 다른 쿼리 아이디가 붙어있다.

DAO (인터페이스) 라 했는데 메서드 들이 있는데. 내용은 없고 껍데기(인터페이스)만 들어있다.

인터페이스 안에 있는 메서드 이름하고 매퍼파일이라 불리는 쿼리의 아이디랑 같아야한다.

사용자가 DAO 안에 메서드를 호출하면 메서드 호출과 똑같은 아이디를 갖는 쿼리가 실행이 된다.

인터페이스 안의 메서드가 호출되면(실행되면) 디비작업이 일어나는데 그때 매퍼파일이라 불리는 곳에 매퍼 파일 (xml문서) 안의 동일한 아이디를 갖는 쿼리가 실행이 된다.

메서드 이름하고 쿼리문이 들어있는 매퍼파일( select id는 어쩌구 붙어있을건데 이름이랑 일치하는 거 끼리 맞물려서 돌아가야 한다.)

특성 메서드가 호출이 되면 똑같은 아이디를 갖는 쿼리가 실행이 된다.

매퍼파일 안의 쿼리랑 아이디 일치해야한다!

메서드 이름과 똑같은 아이디를 갖는 쿼리가 실행이 된다.

20210430_194616

컨트롤러 안에는 서비스가 들어있다. 서비스를 자동으로 주입받음.

스프링이 넣어줌.

원래는 저거 필요하면 new해서 자기가 생성해야되는데 스프링에선 알아서 줌.

Autowired 타입 해서 각 타입 맞게 알아서 주입된다.

@Repository 이렇게 붙여줄 수도 있는데 이건 DAO한테 붙여준다.

BoardServiceImpl은 서비스에 해당되는 애

컨트롤러는 서비스를 주입받아서(서비스에 시켜야 하니까)

흘러가는 순서

Controller->Service->DAO 순으로 시킴.

서비스도 내가 작업 안하고 DAO한테 보낸다. dao타입을 받아서 dao를 부려먹음.

그럼 dao(인터페이스)로 옴

근데 마이바티스 동작은 메서드 이름과 xml, mapper 안의 똑같은 쿼리 아이디 끼리 실행된다.

컨테이너 읽어다가 객체 만들어 두는게 root-context.xml에 다 들어있다.

패키지가 하나 지정되어있는데 그걸 스캔한다.

20210430_200455

패키지 쓴 거중 어노테이션 쓴거 있나도 찾는다.

이 패키지를 찾아서 어노테이션 있나 찾아서 자바객체인 빈으로 자동 등록시켜준다.

컴포넌트 한 어노테이션 쓴적 있나? 서비스 패키지에 쓴거 있나? 컨트롤러라는 어노테이션 쓴 적이 있나?

지정한 패키지를 뒤져서 해당하는 어노테이션이 있으면 객체를 생성하고. 주입식 해주면 주입까지 시켜주는게 component-scan이라는 태그.





© 2021.03. by yacho

Powered by github