주니 개발 도서관

Spring 18

[ Mybatis 프레임워크 ] 새로운 DAO 관리

[ Mybatis 프레임워크 ] Ibatis라는 이름으로 시작됨 >> Ibatis가 보인다 = 예전코드구나, Mybatis구나 ( 문법은 조금 다름 ) ※ 사용이유 1) DB연동을 담당하는 JAVA 코드를 1~2줄로 줄일수 있음 [ 가독성이 좋아짐 ] 2) SQL 문은 JAVA코드에서 분리하여 XML 파일로 별도 관리가능 [ 응집도 ↑↑↑ ] 즉, 유지보수 용이 ※ 팀 프로젝트에 적용하는 방법? 1) **우리가 어필해야하는 부분 >> 여러가지 버전의 DAO를 빠르게 교체 가능 @Repository(DAO 클래스) + @Service(Serviceimpl 클래스) >> [ 2 layered 아키텍처 ]를 이용하여 교체 2) 상대적으로 간단한 기능들의 CRUD를 Mybatis로 구현 MybatisDAO를 제..

Spring 2022.10.04

[ 다국어 처리 ] Spring을 이용하여 표현

[ 다국어 처리 ] - "국제화" 라고도 함 하나의 페이지를 여러가지의 언어로 서비스하는 것 과거에는 언어별로 페이지를 다르게 제작함 ( = 국제화 X ) >> 프레임워크의 다국어처리기능을 사용 ( 별도 페이지 제작을 하지 않고 표현할 예정 ) 1) 메세지 파일 제작 new >> file 생성 . properties 확장자 고정 언어를 Locale 정보로 수행 ( ko, ja, en, zh ) >> 파일명에 언어에 해당하는 Locale 코드를 추가 ex) xxx_en.properties, xxx_ko.properties 파일 내부에는 메세지변수 + 메세지 값을 작성 값은 유니코드로 작성 ( 자동변환 됨 ) 2) 스프링설정파일에게 메세지 파일들을 읽어들일수있도록 클래스 추가 다국어 처리 클래스 클래스를 생..

Spring 2022.09.29

[ 이미지 업로드 ] 간편하게 Spring으로 표현

이전 JSP 프로젝트에서 중개사가 매물을 등록하기 위해 이미지 업로드를 표현한 적이 있다 까다롭다고 생각했던 이미지 업로드를 Spring을 통해 간편하게 이용해보자 일단 파일 업로드를 사용하기위해 자르파일을 생성해야한다 ( Pom.xml ) 스프링에서 제공하는 MultipartResolver를 설정해 주어야 한다 ( Resolver 이므로 DispatcherSevlet.xml 에서 생성한다 ) id 값과 주입할 name값은 Spring에서 제공하는 " 형식 " 이기 때문에 지켜주어야 한다 value 값은 허용할 파일크기를 뜻한다. ( -1 일경우 무제한 ) 이미지 데이터를 Command 객체에 세팅하기 위해서는 이미지 데이터를 담아줄 VO에 멤버변수가 필요하다! 스프링에서 제공하는 이미지데이터를 담아줄 ..

Spring 2022.09.28

[ 에러 페이지 설정 ] @과 xml설정

실무자입장에서는 크게어필이 안될수도 있다 에러페이지를 설정했을 때의 장점 예외페이지를 설정하여 사용자 편의성을 증가시킬수 있다 - 실제로 만날 수 있는 프로젝트 내용 (신입개발자 실무) 에러 처리 : 에러 자체가 발생되지 않게 선처리(유효성 검사) 에러가 발생하더라도, 넘어갈수있게 (try-catch) 처리 vs 에러 페이지 설정 : 에러는 발생할수있다 1) 에러발생시, 왜 발생했는지 2) 어디로 가야하는지 안내 ex) 웹툰 유료회차 url에 직접넣었을경우 에러페이지 설정방법 2가지 @ 설정 방법 - @을 앞으로 사용할 예정이라고 xml에 등록해야함 - 복잡함 ( @으로 사용하려면 예외처리클래스를 1개이상 만들어야 함 ) - @ControllerAdvice ( 포인트컷 처리와 비슷함 ) - @Except..

Spring 2022.09.28

[ 2-Layered 아키텍처 ] MVC2로 교체하기

Spring MVC를 기반으로 프로젝트 순서 1. xxx.do 요청 2. 서블릿컨테이너 구동됨 ( web.xml ) DispatcherServlet을 생성 >> 참조할 DS-servlet.xml 을 로드(메모리에 적재)해서 생성 3. 스프링컨테이너가 구동됨 ( DispatcherServlet-servlet.xml ) Controller 객체들 생성 C 객체들이 Command 객체로 DAO 객체를 사용함 >> DAO2를 사용하고 싶었으나 잘안됨 => @Autowired가 미리 되어있어야함 MVC2 기반으로 프로젝트 수정 ☆ C의 모든 메서드는 DAO 객체를 직접 이용하고있음! ☆ Spring에서는 DAO 객체를 직접 이용하지않고, "비즈니스 컴포넌트(ServiceImpl)"를 이용해서 DAO 객체를 다룰수..

Spring 2022.09.27

[ MVC 패턴 ] Spring으로 표현하기 (3)

Spring Boot 형식으로 좀더 표현을 바꿔볼 예정이고 오늘은 3가지 어노테이션을 추가로 포스팅하겠습니다 - @RequestParam - @ModelAttribute - @SessionAttributes Spring Boot 형식으로 변경 ModelAndView 객체를 사용하여 아웃풋을 mav로 사용하고있다 더 나아가 Boot까지 공부해볼 예정이기에 Boot 형식으로 바꿔보자 ModelAndView는 값을 저장 & 경로지정을 한번에 해주는 객체였는데 Model 객체를 이용하여 값을 저장하고 return은 String 타입을 이용하여 경로를 지정해 줄 것이다 즉, 아웃풋은 String으로 통일하고 데이터저장이 필요하다면 ModelAndView 객체 대신 Model 객체 사용 >> Boot 형식 위와같이..

Spring 2022.09.23

[ MVC 패턴 ] Spring으로 표현하기 (2)

https://hongjuni.tistory.com/66 [ MVC 패턴 ] Spring으로 표현하기 기존에 배웠던 MVC 패턴을 Spring으로 표현한다면 어떤 장점이 있는가? 기존의 MVC 패턴실행 순서 사용자의 요청 >> *.do >> FrontController 서블릿 에서 C 호출 >> 경로정보 반환 >> 사용자에게 화면제공 Fro hongjuni.tistory.com 기초부터 시작하여 이해할 수 있도록 공부하고 있습니다 이전 글들을 참조하여 글을 읽으시면 더욱 이해하기 쉽습니다 ex) Mapping xml설정 >> @RequestMapping으로 바뀌는 과정 기존에 있는 스프링컨테이너.xml(디스패처서블릿)의 설정을 어노테이션(@)으로 바꿔보도록 하자 어노테이션으로 바꾸기위해선 .xml 설정 ..

Spring 2022.09.21

[ MVC 패턴 ] Spring으로 표현하기

기존에 배웠던 MVC 패턴을 Spring으로 표현한다면 어떤 장점이 있는가? 기존의 MVC 패턴실행 순서 사용자의 요청 >> *.do >> FrontController 서블릿 에서 C 호출 >> 경로정보 반환 >> 사용자에게 화면제공 FrontController.java (서블릿) InsertMemberAction.java FrontController.java (서블릿) 기존의 MVC 패턴을 Spring에 접목시켰을 경우 1. 메모리를 불필요하게 사용하던 객체들이 현저히 줄어듦 >> Spring에서 제공하는 객체들을 사용하여, 객체를 생성할 필요가 없음 2. 하드코딩이 줄어들었다 (코드의 불필요한 반복패턴이 줄어듦) >> 사용할메서드().execute(request, response); 항상 붙여왔던 것..

Spring 2022.09.20

[ JDBC ] 템플릿 메서드 패턴

현재의 JDBC는 개발자가 직접 관리해야하는 코드가 많은편 " 템플릿 메서드 패턴 중에 하나 " 인 jdbctemplate 클래스를 활용해 보자 템플릿 메서드 패턴 반복적인 로직을 가지는 부분을 캡슐화해서 사용하는것이 목표 코딩 순서가 정형화된 기술을 재사용하기 용이하게 모듈화해놓은 것 1) 라이브러리를 추가해야한다 Pom.xml에 코드를 추가하여 오른쪽구석에 다운로드 바가 완료될때 까지 대기!! 추가 완료 된 모습 2) JdbcTemplate에서 활용할 DataSource가 필요 DataSource를 applicationContext.xml에서 생성해야 한다 원래라면 이 아닌 @으로 사용할 수 있는 것 아닌가? >> 우리가 만드는 클래스는 @를 이용할 수 있다 >> 클래스나 데이터소스를 외부에서 지원받..

Spring 2022.09.16

[ 관점지향 프로그래밍 ] AOP ( Pointcut 어노테이션 설정 )

applicationContext.xml 에서 스프링 컨테이너에게 "나 지금부터 AOP 설정 @으로 할거야" 라고 알려줘야한다 xml 설정들을 @으로 바꿔보도록 하겠다 위 사진의 코드를 모두 어노테이션으로 바꿔보도록 하겠다 1) @Service @Aspect 서비스 어노테이션은 DAO를 Service하는 클래스에 설정하는 어노테이션인데 일반적인 @Context 어노테이션보다 메모리를 덜 사용하고 더 빠르게 찾을 수 있는 장점이있음 + @Aspect를 이용하여 DAO Service 클래스와 혼동이 오지않도록 해당 어노테이션이 있다면 Advice 클래스라는 의미 2) @Pointcut ( 포인트컷(핵심로직, CRUD) 범위 설정 ) public void 포인트컷명() {} 위에 설정하고 바디를 채울필요가 없..

Spring 2022.09.16