스프링 다시 시작

w ho
8 min readJun 7, 2020

--

스프링을 여러번 해봤고, 프로젝트도 몇번 해봤지만 항상 느끼는게
매번 시작할때 마다 시작의 거부감과 어려움을 느낀다. ..

  1. eclipse 설치시 Eclipse IDE for Java EE Developers로 설치를 한다.
  2. eclipse 안에서 help -> marketplace에 들어가서 sts를 설치한다.
    -> 이는 XML이나 스프링 설정시 자동완성을 도와준다.(ctrl+space)
  3. file -> new -> Spring legency project 로 프로젝트 실행

자바 버전 변경하는 법
프로젝트 우클릭 → properties -> java bulid path → add Libary -> JRE 클릭

Alternate JRE 에 들어가서 install jre → add 통해서 해당 java 버전 폴더를 적용시키면된다.

pom.xml

이 파일에서는 기본적인 설정 파일을 maven에 설치하는 역할을 한다.

lombok이라는 jar을 이용하여 java test를 해보기 위해 lombok 설정

▶ Lombok 이란?

롬복(Lombok)은 자바에서 Model(DTO, VO, Domain) Object 를 만들때, 멤버필드(프로퍼티)에 대한 Getter/Setter, ToString과 멤버필드에 주입하는 생성자를 만드는 코드 등 불필요하게 반복적으로 만드는 코드를 어노테이션을 통해 줄여 주는 라이브러리, 프로젝트 입니다.

사실 반복되는 Getter, Setter, toString 등을 자동으로 해주는 것만으로도 고마운 것 같다. 또한 @log 를 이용하여 로그를 찍을수 있는 기능도 제공한다.

spring 5버전을 사용해보기 위해 스프링 버전 변경

root-context.xml

스프링 프레임워크에서 관리해야하는 객체 를 주입
Namespace를 이용하여 context를 체크하여 어노테이션으로 만든 객체 사용가능

com.spring.sample 패키지에 있는 모든 어노테이션을 적용하기 위한 코드

DI 기본

@Data 어노테이션은 자동으로 setter getter를 해주는 어노테이션이다 . @Component는 자동으로 root-context.xml에 객체를 생성해준다.
DI이 개념으로 Retaurant객체에 chef 객체를 주입시킨다.
lombok을 이용해서 로그를 찍어 주입 확인

데이터페이스 연결 — 커넥션풀

java에서는 DataSource라는 인터페이스를 통해서 커넥션풀을 사용한다.
커넥션 풀은 여러 종류가 있고 spring-jdbc라이브러리를 이용하는 방식이
있다.(더 나아가 HikariCP를 이용하는 방식도 있음)

pom.xml에 spring-jdbc 설정
root-context.xml 에 datasource 객체 추가
pom.xml에 ojdbc드라이브를 설정해야 driver 연결이 된다.
마찬가지로lombok으로 log찍어서 연결 확인

Mybatis

mybatis-spring이라는 라이브러리를 사용하여 쉽게 연동 처리

pom.xml에 필요한 설정 추가
root-context.xml에서 sqlSessionFactory객체를 만들어 내부적으로 알아서 Connection을 생성하거나 원하는 SQL을 전달하는 역할을한다.
root-context.xml에 Namespaces에 mybatis-spring을 추가한다.
root-context.xml 에서 sql문이 있는 mapper를 만들어 놓은 해당 패키지의 mapper 어노테이션을 쓰기위해 설정

mapper.xml을 이용하여 사용할경우 위치는 Mapper 인터페이스가 있는곳에 만들어 사용하거나 src/main/resource에서 xml파일을 인터페이스 경로와 동일한 경로로 만들어 사용하면된다.

namespace를 TimeMapper 인터페이스로 설정하고 select문을 사용해본 경우 TimeMapper 인터페이스의 xmlget() 추상 메소드를 사용하면 select sysdate from dual 이라는 sql문을 실행 시킨다.

web.xml

tomcat 구동과 관련된 설정 파일

web.xml 초기 모습

<tomcat 구동시 순서>

web.xml 확인 -> web.xml에서 root-context.xml 확인
-> root-context.xml에서 정의된 객체들이 스프링 영역 안에 생성 객체간
의존성 처리
-> 스프링 MVC에서 사용하는 DispatcherServlet이라는 서블릿 동작
-> 캡쳐에서 보다 시피 DispatcerServlet을 진행하며 사용하는 파일이 servelt-context.xml

  • 사용자의 request는 DispatcherServlet을 통해서 처리
  • HandlerMapping은 @RequestMapping ㅇ어네토이션이 적용된 것을 기준으로 판단하여 해당 컨트롤러를 동작
  • Controller는 Request를 처리하는 로직 작성 view에 전달해야 하는 데이터는 Model에 담아전달
MVC 패턴 어노테이션 예시

오라클 계정 만들기

계정은 항상 sys라는 관리자 모드에서 create user를 사용하여 id와 비번을 설정하고 grant 명령을 통해서 권한을 주어야한다.
그 후 계정으로 접속하면 새로 book 접속 이름에 book_ex라는 계정이 만들어 진다 .
spring에서는 root-context.xml에서 오라클연결을 하기 때문에 root-context.xml에서 dataSource 부분의 데이터 연결 값만 해당 데이터베이스 계정으로 연결하면 된다.

해당 데이터베이스 연결후 Mybatis 사용해보기

우선적으로 mapper.xml에서 사용할 mapper interface를 만들어야 한다.
그후 mapper 인터페이스의 메소드를 id값으로 하여 원하는 쿼리 작성 캡쳐화면에서 isnert keyinsert로 나눈 이유는 추가된 pk의값을 알필요가 있을때는 key를 따로 만들어 주고 insert해주면 추후에 생성된 key값을 알수 있다.
쿼리 진행시 >를 인식하기 위해서는 <![CDATA[ 쿼리 작성]]> CDATA를 이용하여 쿼리를 작성해야한다.

비지니스 로직(Service인터페이스 /ServiceImplement(mapper 주입)인터페이스함수구현)

사용 이유
: Mybatis를 사용한다고 가정했을때 해당 Mapper를 바로 불러서 사용하면 되지 않을까라는 생각을 했지만, Service라는 인터페이스로 만들어 진 서비스 함수를 사용할때 해당 서비스에서 여러개의 Mapper sql를 사용할수도 있고, Controller에서 실질적으로 사용할경우 service 중 하나의 함수가 아니라 여러개의 함수를 동시에 동작하기 위해서 service라는 인터페이스를 이용하여 구현

그후 ,root-context.xml 에서 어노테이션 적용을 해야 적용이 된다.
(root-context.xml 은 db나 service 객체를 관리하고 servlet-context.xml은
controller 객체를 관리하는것 같다. .아직 부족하여 확실한건 아닐수도 있다 …)

--

--

No responses yet