Spring
-
[Spring] AOP(Aspect Oriented Programming) 란?Spring/용어 2020. 3. 22. 16:16
AOP(Aspect Oriented Programming) 란? 공통의 관심 사항을 적용해서 발생하는 의존 관계의 복잡성과 코드 중복을 해소해 주는 프로그래밍 기법입니다. AOP 용어Advice언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있습니다. '메서드를 호출하기 전/후(언제)에 트랜잭션(공통 기능)을 적용한다.'JoinpointAdvice를 적용 가능한 지점을 의미합니다. 메서드 호출, 필드 값 변경 등이 joinpoint에 해당합니다.PointcutJoinpoint의 부분 집합으로 실제로 Advice가 적용되는 Joinpoint를 나타냅니다. 스프링에서는 정규 표현식이나 AspectJ의 문법을 이용하여 Pointcut을 정의할 수 있습니다.Weaving 어떤 Advice를 어떤 Poi..
-
[Spring] DI(Dependency Injection) 란?Spring/용어 2020. 3. 22. 16:12
DI(Dependency Injection) 란?IoC(Inversion of Control)이라고도 표현하며, 객체 간의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행해 준다는 개념입니다. 의존할 객체를 지정하는 방법123456789101112131415// 1.객체를 직접 만들어 사용public class BoardService { private BoardDao boardDao = new BoardDao();} // 2.객체를 주입 받아 사용public class BoardService { private BoardDao boardDao; // 생성자에서 의존하는 객체를 전달받음 public BoardService(BoardDao boardDao) { ..
-
[Spring] 게시판 만들기(22) - MDC(Mapped Diagnostic Context) 설정Spring/4.3.x - 게시판 만들기 2019. 11. 24. 13:37
MDC를 설정하는 이유는 웹 요청에 대한 로그인 정보나 세션 정보를 추적할 수 있기 때문입니다. 현재 샘플에서는 로그인 정보나 세션 정보가 없기 때문에 BOARD_SEQ 값을 추가하였습니다. 1.logback.xml 수정 key에 대한 value 값만 노출하고 싶다면 패턴에 %X{ID}로 추가한 MDC에 key값을 ID로 정의하면 되고('ID'는 임의로 정의한 값), key_value 패턴으로 key와 value 값을 모두 노출하고 싶다면 %X로 추가하면 됩니다. (%X은 로깅이 발생한 Thread와 관련된 MDC에 정보를 출력합니다.) 더보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 %d [%thread] %-5level %logger - [..
-
[Spring] REST JSON Response 예제Spring/기타 2019. 5. 26. 18:56
1. BeanNameViewResolver, MappingJackson2JsonView 적용 BeanNameViewResolver 클래스는 뷰 이름과 동일한 이름을 갖는 빈을 뷰 객체로 사용합니다. BeanNameViewResolver는 주로 커스텀 View 클래스를 뷰로 사용해야 하는 경우 사용됩니다. 스프링4 버전은 자바 객체를 JSON으로 변환해서 보여주는 뷰 구현 클래스인 MappingJackson2JsonView를 제공하고 있습니다. 컨트롤러에서는 다음과 같이 뷰 이름으로 MappingJackson2JsonVie 타입의 빈을 설정해주면 됩니다. MappingJackson2JsonView는 모델에 저장된 모든 객체를 JSON 형식으로 변환해줍니다. MappingJackson2JsonView는 내부..
-
[Spring] REST XML Response 예제Spring/기타 2019. 5. 25. 16:50
1.Jackson 라이브러리 추가 Java 객체를 JSON으로 변환하기 위해서는 Jackson 라이브러를 추가해야합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 4.0.0 com.tychejin springrest springrest war 1.0.0-BUILD-SNAPSHOT 1.8 4.1.4.RELEASE junit junit 4.12 test org.springframework spring-webmvc ${org.springframework-version} org.sprin..
-
[Spring] 게시판 만들기(21) - 게시글 수정(첨부파일 등록 및 삭제)Spring/4.3.x - 게시판 만들기 2019. 5. 10. 11:17
1. Front-End 파일 수정 1_1. boardUpdate.jsp 수정 1_1)게시글 등록 시에 첨부파일을 포함하지 않은 경우 게시글 수정 시에 첨부파일을 등록할 수 있도록 수정 - Form 태그 속성 및 ajax 호출 방식을 변경하세요. - 첨부파일을 등록하는 로직은 이미 구현되어 있으므로, 게시글 수정 시 첨부파일을 최초로 등록하거나 삭제 후 재등록 시 files 정보만 넘겨주시면 벡엔드에서 따로 작업할 내용은 없습니다. 1_2)게시글 등록 시에 첨부파일을 포함한 경우 게시글 수정 시에 첨부파일을 삭제할 수 있도록 수정 - 삭제할 첨부파일의 정보를 저장할 전연변수 또는 input 태그를 선언하세요. (를 추가) - TB_BOARD_FILE 테이블에 PK는 BOARD_SEQ, FILE_NO이므로 ..
-
[Spring] 게시판 만들기(20) - 파일 다운로드(BeanNameViewResolver)Spring/4.3.x - 게시판 만들기 2018. 12. 20. 14:15
1. 설정 파일 수정 1_1) servlet-context.xml 수정 - 다운로드 처리를 위한 BeanNameViewResolver를 추가하세요. - ViewResolver이 2개 이상일 때는 우선순위가 필요하므로 order를 추가하세요. - FileDownloadUtil.java을 bean으로 등록하세요. 더보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 Colored by Color Scripter cs 2. Back-End 파일 수정 및 추가 2_1) F..
-
[Spring] 게시판 만들기(19) - 파일 업로드(MultipartHttpServletRequest)Spring/4.3.x - 게시판 만들기 2018. 12. 20. 14:00
스프링 프레임워크의 내장 객체인 CommonsMultipartResolver과 jquery.form.js를 이용한 파일 업로드 방식을 진행하겠습니다. 1. TALBE 생성 첨부파일 정보를 저장할 테이블을 생성하세요. 첨부파일을 저장할 테이블은 한 개의 게시물에 여러 개에 첨부파일을 등록할 수 있도록 FILE_NO 컬럼을 추가하세요. 더보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -- TB_BOARD_FILE 테이블 생성 및 코멘트 추가 CREATE TABLE BOARD.TB_BOARD_FILE ( BOARD_SEQ INT Not Null COMMENT '게시글 번호' , FILE_NO INT Not Null COMMENT '첨부파일 번호' , FILE_..
-
[Spring] 게시판 만들기(18) - 계층형 게시판(답글쓰기) 적용Spring/4.3.x - 게시판 만들기 2018. 12. 19. 13:06
계층형 게시판 계층형 게시판이라는 것은 하나의 게시글에 대해 답글 쓰면 해당 게시글의 하위로 답글이 위치되어 계층적인 구조를 이루면서 목록을 구성해 주는 게시판입니다. 1. 쿼리 추가 및 수정 1_1) 게시글 등록(insertBoard) 쿼리 변경 계층형 게시판을 위해서는 게시글 간에 그룹을 만들어야 하기 때문에 BOARD_RE_REF 컬럼에 값을 입력하도록 변경해야 합니다. 더보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 SELECT IFNULL(MAX(BOARD_RE_REF), 0) + 1 FROM BOARD.TB_BOARD INSERT INTO BO..
-
[Spring] 게시판 만들기(17) - 페이징(Paging) 처리Spring/4.3.x - 게시판 만들기 2018. 12. 19. 11:03
1. 페이징 처리를 위한 쿼리 추가 및 수정 1_1) 게시물 총 개수를 구하는 쿼리 추가 페이징 처리를 위해서는 게시물 총 개수가 필요하기 때문에 쿼리를 추가하세요. 1 2 3 4 5 6 SELECT COUNT(*) FROM BOARD.TB_BOARD Colored by Color Scripter cs 1_2) 게시물 목록을 조회하는 쿼리 수정 페이징 처리를 위해서는 한 페이지의 게시물 목록만 조회해야 합니다. MYSQL에서는 LIMIT ~ OFFSET을 사용하며 한 페이지의 게시물 목록만 조회할 수 있으므로 게시물 목록을 조회하는 쿼리에 LIMIT ~ OFFSET을 추가하세요. LIMIT는 게시물 목록의 수, OFFSET은 게시물을 몇 번째부터 가져올지를 정의할 수 있습니다. 1 2 3 4 5 6 7 ..