본문 바로가기

IT Study/Spring19

Spring - MyBatis 스프링 JDBC 연동하기 Mybatis 에서 Spring에게 연동에 필요한 API를 제공한다. ​ 1. pom.xml에 추가(ibatis dependency 제외함) org.mybatis mybatis 3.3.1 org.mybatis mybatis-spring 1.2.4 ​ 2. db.properties 파일 삭제 + sql-map-config.xml 파일에서 사용하지 않는 설정제거 (이미 DataSource가 스프링 설정파일(applicationContext)에 존재하기 때문에) applicationContext(스프링 설정파일) dataSource로 등록되어있다. 3. SqlSessionFactory 클래스를 스프링 설정파일에 bean 등록을 해야 객체로 사용 가능함 => SqlSessionFactory 객체로부터 DB연동에.. 2023. 1. 3.
Spring - Mybatis DB 직접 연동하기 및 insert 적용 Mybatis란? Mybatis는 자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원하는 프레임워크이다. SQL을 별도의 파일로 분리해서 관리하게 해준다. ​ Mybatis 특징 쉬운 접근성과 코드의 간결함(가독성) JDBC의 모든 기능을 Mybatis가 대부분 제공한다. 복잡한 JDBC코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다. 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있다. SQL문과 프로그래밍 코드의 분리 SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다. ​ 동작방법 1) XML 파일에 저장된 SQL문을 실행 2) 실행의 결과를 VO(Java객체)에 자동으로 매핑까지 수행함 ​ ​ 1. 플러그인 설치 Eclipse 마켓에서 mybatis 검.. 2023. 1. 3.
Spring - lombok 설치 및 적용하기 lombok Lombok이란 Java의 라이브러리로 반복되는 함수를 Annotation을 사용하여 자동으로 작성해주는 라이브러리이다. 통상적으로 VO를 만들면 각 변수에 대해서 getter, setter를 엄청나게 만들어야 한다. 물론 이클립스(Eclipse)에 getter, setter생성을 지원해주고 있지만 VO를 만들때마다 해당 기능을 실행해서 getter, setter를 만들어줘야 한다는것이 개발자 입장에서는 불편할 수 있다. 이러한 불편함을 해결해주는 라이브러리가 lombok이다. ​ @Data 어노테이션 @Gettet/@Setter/@ToString/@EqualsAndHashCode/@RequiredArgsConstructor을 합쳐놓은 어노테이션이다. POJO와 bean과 관련된 모든 보일러.. 2023. 1. 3.
Spring - 다국어 처리(국제화) 하나의 페이지를 여러가지의 언어로 서비스하는 것을 말한다. 과거에는 언어별로 페이지를 다르게 제작했었다. 하지만 Spring 프레임워크의 다국어 처리 기능을 사용하게 되면서 별도 페이지 제작을 할 필요가 없어졌다. ​ 실습을 통해 영어와 한글 처리를 진행해보았다. ​ 1. 메세지 파일 제작 1) 다국어 처리 관련 파일 message 폴더 생성 메세지 파일의 위치는 src/main/resources 에 message 폴더로 생성 ​ 2) 일반 파일로 선택하여 파일 확장자를 .properties로 생성 => 스프링에서 인지하여 사용해야 하기 때문이다. ​ 3) 언어 선택을 Locale 코드 정보로 수행 Locale 코드란? 사용자의 언어, 국가뿐 아니라 사용자 인터페이스에서 사용자가 선호하는 사항을 지정한 .. 2023. 1. 3.
Spring - 예외 페이지 설정(@ 설정 / .xml설정) Spring에서 예외페이지를 설정하여 특정 예외 발생 시, 해당 에러페이지가 나올 수 있도록 구현해보았다. ​ ​ 웹 사이트를 이용하다보면 아래와 같은 에러페이지를 마주칠 수 있다. 에러 종류는 매우 다양하다. 대표적으로 404/500 에러 페이지가 있으며, 400대/500대 등의 여러 에러가 있다. 이번엔 에러 페이지를 직접 제작/설정하여 사용자의 편의성을 증가시킬 수 있도록 해보았다. ​ 예외가 언제 발생? 존재하지 않는 데이터, null 값, 맞지 않는 데이터형식 등이 전달 되었을 때 에러 발생 ​ 에러처리 vs 에러페이지 1) 에러 처리 1-1) 에러 자체가 발생되지 않게 선처리(유효성 검사) 1-2) 에러가 발생하더라도, 넘어갈 수 있게(try-catch) ​ 2) 에러 페이지 설정 에러 발생은.. 2023. 1. 3.
Spring - MultipartFile 인터페이스를 이용한 파일 업로드 기능 구현 이번 기능은 스프링에서 제공하는 MultipartFile 인터페이스를 이용해서 파일 업로드를 구현해보았다. ​ MultipartFile - 사용자가 업로드한 File을 핸들러에서 손쉽게 다룰 수 있게 도와주는 매개변수 중 하나이다. - 매개변수를 사용하기 위해서는 MultipartResolver Bean이 등록되어 있어야 한다. - MultipartFile 인터페이스는 스프링에서 업로드 한 파일을 표현할 때 사용되는 인터페이스이다. - MultipartFile 인터페이스를 이용해서 업로드한 파일의 이름, 실제 데이터, 파일 크기 등을 구할 수 있다. 메서드 설명 String getName() 파라미터 이름을 구한다. String getOriginalFilename() 업로드한 파일의 이름을 구한다. St.. 2023. 1. 3.
Spring - 2 Layered 아키텍처 사용자의 요청 과정 1. xxx.do 요청 ​ 2. 서블릿컨테이너 구동 dispatcherServlet을 생성 dispatcherServlet-servlet.xml을 로드해서 생성 현재의 계층(layer)을 "프레젠테이션 레이어"라고 한다. ​ 3. 스프링 컨테이너가 구동 Controller 객체들 생성 Controller 객체들이 Command 객체로 DAO 객체를 사용함 >>DAO2를 사용하고 싶었으나 잘 안됨. @Autowired DI(의존성 주입)를 해주어야 한다. ​ 기존 Controller의 모든 메서드는 사진과 같이 DAO 객체를 직접 이용하고 있다. Spring에서는 DAO 객체를 직접 이용하지 않고, 반드시 "비즈니스 컴포넌트(ServiceImpl)"를 이용해서 DAO 객체를 다룰 수 있.. 2023. 1. 3.
Spring - SpringBoot 스타일로 정형화 해보기 이전의 내용들을 보면 View에 데이터를 보낼 필요가 있을 때 ModelAndView 객체를 통하여 데이터 전달을 했었다. 전달할 데이터가 존재하지 않으면 String 객체를 통해 경로를 설정하였다. 이번엔 SpringBoot 스타일로 코드를 작성해보았다. ​ SpringBoot는 반환값을 String 객체로 정형화 시키는데, 전달할 데이터가 존재할 때는 Model 객체를 활용하였다. ​ 데이터를 전달할 때의 기존의 코드 - mav 객체를 통한 전달하기 @RequestMapping(value="/board.do",method=RequestMethod.GET) public ModelAndView board(BoardVO bVO,BoardDAO bDAO, ModelAndView mav) { bVO=bDAO... 2023. 1. 3.
Spring - @RequestParam/@ModelAttribute/@SessionAttribute @RequestParam - 기존의 스코프를 통한 request.getParameter()와 같은 기능이다. - 단일 파라미터를 쉽게 가져올 수 있는 방법 중 하나이다. - 구조를 바꾸기 힘들 때 사용하는 경우가 있다.(VO에서 멤버변수를 추가하는 등의 구조변경) - Command 객체에는 없는 파라미터를 Controller 클래스에게 전달해주기 위해 사용한다. @RequestParam(value="searchCondition",defaultValue="TITLE",required=false)String searchCondition 구조 @RequestParam(value="value", defaultValue="default Value", required=boolean type)[데이터 타입][값을 담.. 2023. 1. 3.