Spring 20

Spring 게시판 구현 - Business Layer

Business Layer 비지니스 계층은 'Service'라는 이름을 주로 사용한다. BoardService라는 인터페이스를 만들고 BoardServiceImpl클래스가 구현하는 형태로 만들 것이다. 굳이 인터페이스를 중간에 두는 이유는 다음에 구현할 프레젠테이션 계층과 강결합을 피하기 위해서다. service패키지 생성 public interface BoardService { Long register(BoardVO boardVO); List getAllPost(); BoardVO getPost(Long bno); int modify(BoardVO boardVO); int remove(Long bno); } @Service @RequiredArgsConstructor @Log4j publ..

Spring legacy 2020.09.12

Spring게시판 구현 - Data/Persistence Layer

영속 계층 구현 순서 VO 생성 @Data @Builder public class BoardVO { private Long bno; private String title; private String content; private String writer; private Date regdate; private Date moddate; } MyBatis Mapper인터페이스 & Mapper.xml public interface BoardMapper { int insert(BoardVO boardVO); List getAllPost(); BoardVO getPost(Long bno); int update(BoardVO boardVO); int delete(Long bno); Long lastInsertId()..

Spring legacy 2020.09.12

Spring 게시판 구현 준비

요구사항 사용자는 게시물을 등록할 수 있다. 사용자는 게시물을 조회할 수 있다. 사용자는 게시물을 수정할 수 있다. 사용자는 게시물을 삭제할 수 있다. 레이아웃 무료로 제공하는 부트스트랩을 이용할 것이다. 링크 URL 설계 URL 전송 방식 비고 /board/list GET 전체 게시물 목록 /board/write GET 게시물 등록 양식 /board/write POST 게시물 등록 처리 /board/post GET 게시물 조회 /board/modify GET 게시물 수정 양식 /board/modify POST 게시물 수정 처리 /board/remove POST 게시물 삭제 데이터베이스(MySQL) CREATE TABLE `tbl_board` ( `bno` int NOT NULL AUTO_INCREMEN..

Spring legacy 2020.09.12

Spring MVC

스프링 MVC 이미지 출처 스프링의 목적은 웹이 아니다. 위에 보이는 것처럼 스프링 웹은 스프링의 기능 중 하나일 뿐이다. 스프링 MVC 프로젝트를 생성하면, 자바 영역(POJO)과 웹 영역을 연동해서 프로젝트를 구동하게 된다. 웹 영역이 MVC설정을 포함하고 있다. 스프링 MVC의 사상 스프링 MVC 이전까지는 Servlet/JSP API를 이용했다. HttpServletRequest/Response 같은 클래스를 이용해서 브라우저와 서버 간 데이터를 주고 받았다. 이런 부분을 내부적으로 처리하고, 개발자는 자바 코드로 개발에만 몰두할 수 있도록 하자는 생각에서 탄생한 것이 스프링 MVC다. 스프링 MVC 구조 이미지 출처 모든 요청은 DispatcherServlet(web.xml)으로 들어온다. Ha..

Spring legacy 2020.09.12

파라미터 수집Binding

자동 수집 DTO @Data public class SampleDTO { private String name; private int age; } 컨트롤러 @GetMapping("/autoCollect") public void parameterAutoCollect(SampleDTO dto) { SampleDTO parameters = dto; log.info(parameters); log.info(parameters.getAge() == 1); } 이렇게만 해두고 브라우저에 http://localhost:8080/sample/autoCollect?name=cocolee&age=20를 요청한다. INFO : com.coco.controller.SampleController - SampleDTO(name=co..

Spring legacy 2020.09.12

콘솔에서 쿼리 확인하는 log4jdbc-log4j2 라이브러리

log4jdbc-log4j2 해당 라이브러리를 이용하면 콘솔에서 SQL문과 결과를 가지런하게 확인할 수 있다. 우선 메이븐 설정을 추가한다. 링크 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 RootConfig.java @Bean public DataSource dataSource() { HikariConfig config = new HikariConfig(); // config.setDriverClassName("com.mysql.cj.jdbc.Driver"); // config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/springex?serverTimezone=Asia/Seoul"); config.setDriverCla..

Spring legacy 2020.09.12

MyBatis

💣 마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다 출처 퍼시스턴트? 객체가 생성되면 메모리에 올라간다. 객체를 이용해서 다루는 데이터들은 객체가 사라지면 함께 사라진다. 이렇게 일회용으로 버려지는 데이터들을 유지하려면, 객체가 사라지기 전에 어딘가에 저장해두어야 한다. 그러면 나중에 객체가 다시 생성되었을 때 이전에 사용했던 데이터를 재사용할 수 있다. 다시 말해, 객체가 사라지기..

Spring legacy 2020.09.12

Spring 5.0 Setting & Lombok

스프링 5.0 pom.xml 설정 🚥 XML설정 && 자바 설정 둘 중 하나를 골라서 설정해야 한다. 나는 java 클래스를 이용해 설정했다. 선택한 두 개의 root-context.xml과 web.xml을 삭제한다. 추가 해당 경로의 servlet.xml까지 삭제한다. 그 다음 삭제한 xml들을 대체할 자바 클래스를 생성한다 RootConfig.java package com.coco.config; @Configuration //참조할 패키지 @ComponentScan(basePackages = {"com.coco.sample"}) public class RootConfig { } ServletConfig.java @EnableWebMvc @ComponentScan(basePackages = {"com...

Spring legacy 2020.09.12

스프링이란?

스프링이라는 프레임 워크 image 🌍Wikipedia 프레임워크의 사전적 의미는 뼈대, 근간이다. 이까짓 뼈대가 왜 필요하나? a,b,c, ...z가 함께 일하는데 모두가 다른 방식으로 일한다면 어떨까? 뭐 그럭저럭 흘러는 가겠지만... 지금은 상상할 수 없는 어떤 무시무시한 일들이 벌어질지도 모르겠다. a와 w가 밤새 개발한 다음, 이제 우리 코드를 합쳐 보자! 했을 때, a의 방식과 w의 방식이 전혀 달라서 대략난감한 경우 말이다. 흠. 이렇게 하자고 했잖아! 난 이게 더 좋단 말이야! 이런이런. 프레임워크는 독재차처럼 흐름을 제어한다. 개발자는 프레임워크가 제어하는 흐름을 따라 개발할 수밖에 없다. 위에서 예로든 a부터 z로 이루어진 알파벳 팀 모두가 Spring을 쓴다고 해보자. 그럼 a와 w는..

Spring legacy 2020.09.12

스프링 시큐리티 한글 설정(Java config)

스프링 시큐리티 한글 설정 게시판에 스프링 시큐리티를 접목하여 로그인한 사용자만 게시물을 등록할 수 있게 했다. 그런데 갑자기 한글 인코딩이 되지 않는 문제가 발생했다. https://stackoverflow.com/questions/20863489/characterencodingfilter-dont-work-together-with-spring-security-3-2-0 이 답변에 따르면, "We need to add CharacterEncodingFilter before filters who read request properties for the first time. There is securityFilterChain (stands second. after metrica filter) and we ..

ERROR!!!!!!! 2020.09.11