-- INDEX --
1. pom.xml | 2. web.xml | 3.root-context.xml | 4.servlet-context.xml | 5. 스프링 DB 설정 |
프로젝트 관련 정보 | 루트 스프링 서블릿 생성환경 |
스피링 전역 바구니 | 서블릿 전용 바구니 | 5개의 라이브러리 3개의 <bean> |
스프링 설정 파일
1. pom.xml
- Project Object Model
- 프로젝트에 관한 정보들이 xml 파일에 작성 되어있다.
- maven에 의해 관리된다.
- < properties > = 변수를 만드는 부분
1-1 : 프로젝트 관련 기본 설정 사항
- <java-version>11</java-version>
- <source>${java-version}</source>
- <target>${java-version}</target>
- <org.springframework-version>5.3.18</org.springframework-version>
- 서블릿 디펜던시 수정 (톰캣 버전에 맞춰서)
- JSP 디펜던시 수정 (톰캣 버전에 맞춰서)
- jstl 은 lib 에 직접 추가
2. web.xml 살펴보기
- 웹 프로젝트가 실행될 때, 가장 먼저 읽혀진다.
2-1 : <context-param>
- 모든 서블릿과 필터가 공유하는 루트 스프링 컨테이너의 정의
- spring이 객체 생성하는 경우 자동으로 연결시켜주는데
- context 바구니에 들어있어야지 자동 주입이 되는 것이다.
- 이때의 바구니는 servlet바구니고 ( = DS 바구니)
- web.xml에서 다룰 바구니는 root 바구니에 대한 정보를 설정하는 곳이다.
여기에 있는 파일 정보를 통해 ---> root바구니에 대한 정보를 확인할 수 있다.
( 그 바구니에 어떤 것이 들어갈 것이지, 어떻게 구성되어있는지 )
2-2 : < servlet > <servlet-mapping>
- 생성될 서블릿 설정 관련 작업
appServlet이 만들어질 때 본인만의 바구니가 만들어질 것인데 그냥 만들어지는 것이 아니라..
이 클래스 경로와 - xml 파일을 참조해서 본인만의 바구니가 만들어질 것이다.
3. root-context.xml 파일
- 스프링 전역에서 사용 될 bean 객체를 등록한다.
SQL 세션 객체를 예로 들면
root-context.xml 바구니에 만들어 놓으면
다른 서블릿들이 필요할 때 가져다 사용할 수 있다.
4. servlet-context.xml 파일
- 서블릿 전용 컨텍스트(바구니) 에 대한 설정
DS는 이제
이 문서를 참조해서
바구니와 bean을
관리할 것이다.
@어노테이션을 ( @Component / @Controller / @Service / @Repository ) -
이용해서 bean으로 등록 - DS전용 바구니에 담기게 해 주었다.
정석으로는 이 context.xml 파일에
직접 <bean>등록을 해주어야한다.
4-1 : <annotation-driven />
- 어노테이션으로 bean등록 관리
- <annotation-driven /> : 활성화시켜주어서 가능했던 것!
4-2 : @Component 스캔
- 컴포넌트로 들어올 애가 있나 탐색하는 것
- @Component는 { @Controller , @Service , @Repository } 애들
- base-package = " 경로 "
- 해당 경로에 있는 애들을 쭉 탐색하면서 어노테이션을 스캔하며 등록해준다.
4-3 : <resources mapping=" " location" " /> :
- 정적 요청에 대한 처리
- 정적 리소스란?
- -> 단순 html파일, 이미지, 동영상, 파일 등 - 굳이 서블릿 안 거치고 보여줄 수 있는 파일들
- 현재 우리 프로젝트에서는 요청을 보내면 — 모든 요청을 DS가 처리한다
- 굳이 서블릿을 거칠 필요가 없는 (정적 리소스) 요청임에도 불구하고
# <resources mapping = " " location = " " />
- 디스패쳐 서블릿 (DS) 너가 – 이 요청은 안 건드렸으면 좋겠다 해주는 것이다.
- 이런 형태의 요청이 발생했을 때 – <mapping>
- 서블릿이 직접 처리하는 것이 아니라
- 여기 있는 경로로 가서 파일을 찾아라 하는 내용이다. - <location>
4-4 : <beans:bean class = " ViewResolver " >
- ViewResolver 객체 - bean으로 등록
- 컨트롤러에서 리턴하는 문자열 앞뒤로 이런 내용을 추가해준다는 내용
prefix는 앞쪽에 / suffix는 뒤쪽에 추가해준다.
5. 스프링 DB 설정
- # 모든 서블릿 애들이 사용할 것이므로 – root-context.xml 바구니에 담아주기
- # 바구니에 bean으로 담아주기 위해서 xml파일 이용하기
- ( @어노테이션 달아주는 방식은 사용하지 못한다. 내가 만든 클래스가 아니라 수정안되므로 )
5-1 : 라이브러리 등록
- 스프링은 자신이 통제해서 사용해야 한다.
- sqlSession을 사용하기 위해 sqlSessionTemplate가 필요했던 것처럼
- mybatis 사용하기위해 MybatisSpring이 필요하다
- db 다녀오는 커넥션 매번 얻기는 부담스럽다.- dbcp 라이브러리 사용
# 스프링 마이바티스
# 스프링 jdbc
# 커넥션 풀 사용
스프링 버전이 변경되면 변경되어야 하는
JDBC-스프링 부분에 등록해놓은 변수 활용하여
스프링 버전 입력
5-2 : <bean> 등록 - 이론
# 라이브러리 객체를 사용하기 위해 해당 객체를 감싸고 있는 새로운 객체를 통해서 이용한다.
- ( 사용자가 직접 객체에 접근하고 명령하는 것을 방지 )
# 감싸고 있는 객체를 만드는 방법은 - .xml 파일을 이용해서 만들어준다.
- <bean class=" " id=" "> 태그를 이용해서 <bean />
# <bean />으로 객체 생성할 때 필요한 파라미터값(=인자값)을 전달해주어야 만들어진다
- <constructor-arg >
- SqlSessionTemplate 객체 만드려고 하면 팩토리가 필요하다
- SqlSession 얻을 때 빌더로 -> factory를 만들고 openSession()했던 것처럼
# 파라미터 값에 객체를 넣어줄 때에는value가 아닌 ref 사용
- < constructor-arg ref=“”>
5-3 : <bean> 등록 - 실습
1. SqlSessionTemplate
- <bean>은 기본 생성자를 부르는 것인데 – SqlSessionTemplate 는 기본 생성자가 없다.
- 만들 때 생성자 인자로 무엇인가를 넘겨주어야겠다.
- 객체를 전달할 때는 value가 아닌 ref로 사용
- 어떤 객체가 필요한가 봤더니 SqlSessionFactory 객체가 필요하다.
이 객체와 이 객체가 연결된 것이다.
이렇게 해주면
SqlSessionTemplate 객체 생성에는 이제 문제가 없다..
2. SqlSessionFactoryBean
- 다만 팩토리를 만드는데 필요한 객체가 아직 없다
- ( 마치, factory빌더로 – factory를 만든 것처럼 팩토리를 만드는데 어떤 객체가 필요하다 )
- 어떤 객체?
- DB 관련 환경정보를 가지고 있는 객체 = dataSource
3. BasicDataSource
- dataSource의 담아줄 커넥션 연결 정보가 담겨있는 객체
- <property 로 4개의 변수에 각각 값 세팅해주고 전달
5-4 : DB 연결 정리
# Mybatis 라이브러리 등록하고
- - SqlSessionTemplate, SqlSessionFacyoryBean 객체 사용하겠다고 <bean> 등록
# dbcp 라이브러리 등록하고
- - BasicDataSource 객체 사용하겠다고 <bean> 등록
데이터 소스(커넥션풀) -> 팩토리(데이터소스) -> SqlSessionTemplate(팩토리)
의 과정으로 커넥션 얻었다!
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 9월' 카테고리의 다른 글
22.09.15 - [ Spring ] 암호화 처리, 리다이렉트 방법 (0) | 2022.09.21 |
---|---|
22.09.14 - [ Spring ] Spring 작동 원리 , mapper.xml 파일 연결하기 (0) | 2022.09.20 |
22.09.12 - [ 추석 연휴 휴강 ] (0) | 2022.09.15 |
22.09.09 - [ Spring ] bean등록 , ViewResolver , 요청 방식에 따라 처리하기, 파라미터 받기 , 데이터 담기 , interface 타입으로 받기 (0) | 2022.09.15 |
22.09.08 - [ Spring ] @Component , @Autowired , injection , IoC 와 DI (0) | 2022.09.15 |