Purple Bobblehead Bunny

Backend/SPRING 11

[Spring] 테스트 주도 개발

🚀 TDD(Test Driven Development) 란? 위키피디아에서 정의된 내용은 다음과 같다. 테스트 주도 개발(Test-driven development, TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 우선 개발자는 바라는 향상 또는 새로운 함수를 정의하넌 자동화된 테스트 케이스를 작성한다. 그런 후, 그 케이스를 통과하기 위한 최소한의 양의 코드를 생성한다. 그리고 마지막으로 그 새 코드를 표준에 맞도록 리팩토링한다. 이 기법을 개발 했거나 '재발견'한 것으로 인정되는 Kent Beck은 2003년에 TDD가 단순한 설계를 장려하고 자신감을 불어넣어 준다고 말했다. 사전적인 정의를 보고선 쉽게 이해가 가지 않을 수도 있다. 테스트 주도 개발(Test Dr..

Backend/SPRING 2023.02.07

[Spring] DAO, Mapper

🚀 Spring Framework로 프로젝트를 진행하고자 해서 패키지 구조를 짜는 도중 의문점이 생겼다 이전 프로젝트에서 패키지 구조를 Controller.java / Service.java / Mapper.java / Mapper.xml 로 사용을 했다. 이 구조가 스프링 공부를 하고 첫 프로젝트의 구조였다. 다른 구조를 찾아봤더니 Controller.java / Service.java / DAO.java / Mapper.xml 로 짜여져 있었다. 육안으로만 확인하면 Mapper.java와 DAO.java만 바꾸면 된다 생각을 하지만 자세히 보면 Mapper.java는 인터페이스 형태이고 DAO.java는 인터페이스와 클래스가 결합이 된 형태이다.그 외 다른 점이 분명 있을 것이다. 두 가지를 비교해보..

Backend/SPRING 2023.02.03

[Spring] Spring Security

🚀 인증과 인가 인가(Authorization) 인증이 완료된 사용자의 권한을 설정하는 과정 인증(Authentication) 내가 누구인지 식별하고, 입증하는 과정 접근 주체(Principal) 보호된 대상에 접근하는 시스템 역할(Role) 권한 부여 🚀 Spring Security Filter 클라이언트가 요청을 보내면 서블릿, JSP등이 처리 한다. Spring MVC에서 요청을 가장 먼저 받는 것이 DispatcherServlet인데, 요청 받기 전에 다양한 Filter가 존재할 수 있다. Filter는 클라이언트와 자원 사이에서 요청과 응답정보를 이용해 다양한 처리를 하는데에 목적이 있다. Spring Security는 다양한 기능을 가진 필터들을 10개이상 제공을 한다. 이렇게 제공되는 필터들..

Backend/SPRING 2023.02.01

[Spring] GET POST 한글처리

🚀 스프링은 한글 뿐만 아니라 UTF-8에서 지원하는 모든 국제어 사용이 자유롭고 POST/GET방식 모두 처리가 가능하다. 우선 이클립스에서 모든 문서가 UTF-8로 생성이 될 수 있도록 설정을 바꾼다. 이 설정을 하게 되면 이제 모든 문서가 UTF-로 작성이 된다. 이제 첫번째로 POST방식의 한글 처리한다 . GET에 비해 POST 방식은 ContentType만 설정해도 간단히 인코딩할 수 있다. 🚀 POST POST 전송 방식에서 인코딩은 web.xml에 스프링이 제공하는 CharacterEncodingFilter를 사용한다. encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFil..

Backend/SPRING 2023.01.31

[Spring] Model

🚀 Model key와 value로 이루어져있는 HashMap Model의 addAttribute()를 통해 view에 전달 할 데이터를 저장 Servlet의 request.setAttribute() 🚀 Model 사용 방법 @RequestMapping으로 매핑 한 메서드의 파라미터로 Model 객체 전달 model.addAttribute 를 통해 model에 값을 저장 Model은 Hashmap 형태이므로 key값을 통해 value값에 접근할 수 있다. @RequestMapping("model") public String model(@ReqeustParam member, Model model){ model.addAttribute("member", member); return "result"; } vie..

Backend/SPRING 2023.01.17

[Spring]MyBatis

🚀 Mybatis는 자바 오브젝트와 SQL 사이의 자동 매핑 기능을 지원하는 ORM(Object relational Mapping) 프레임워크 이다. 기존 JDBC만을 이용한 방식은 프로그램 소스 안에서 직접 connection을 맺고 SQL문을 처리하고 rs.next() 등을 이용하여 하나씩 받아와야 해 코드가 길어지고, SQL의 변경이 필요한 경우에도 java 프로그램을 수정하기 때문에 유연성이 좋지 못하다. MyBatis에서는 상당부분의 코드와 파라미터 설정 및 ResultSet 결과를 대신해주어 코딩의 중복과 무의미한 코드 작성을 생략할 수 있으면서, SQL문을 xml 파일에 작성하여 변환이 자유롭고 가독성이 좋다. 간단한 persistence framework. 배우기 쉽다. 코드가 줄어들고, ..

Backend/SPRING 2022.08.01

[Spring] Connection Pool

🚀 커넥션 풀(DBCP) 웹 컨테이너가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가 객체들을 pool에 저장해두었다가 클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식이다. 자바에서 DB에 직접 연결을 해서 처리하는 경우 드라이버를 로드하고 커넥션 객체를 받아와야 하는데, 사용자가 요청을 할 때 마다 드라이버를 로드하고 커넥션 객체를 생성하여 연결하고 종료하기 때문에 비효율적이다. 이런 문제를 해결하기 위해서 Connection Pool(DBCP)를 사용한다. DBCP(DataBase Connection Pool) : DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 한다 🚀 ..

Backend/SPRING 2022.08.01

[Spring] Logj4

🚀 Logj4 Java 환경의 로깅 시스템을 제공하는 라이브러리 Logger, Appender, Layout 등 다양한 컴포넌트가 사용되며, 로그 레벨을 분류하여 로그 정보를 출력 시킨다. Component 종류 컴포넌트 설명 Logger 로그의 주체, 로그 파일을 작성하는 클래스 Appender 로그를 출력하는 위치 Layout Appender의 촐력포맷(일자, 시간 등)을 설정하여 로그 내용으로 지정하는 속성 로그 레벨 로그는 기본적으로 6개의 레벨을 갖는다. 아래로 갈수록 낮은 레벨 로그 레벨 설명 fatal 시스템 문제와 같은 아주 심각한 에러가 발생한 상태를 나타냄 error 요청을 처리하는 중 문제가 발생한 상태를 나타냄 warn 처리 가능한 문제지만, 향 후 시스템 에러의 원인이 될 수 있는..

Backend/SPRING 2022.08.01

[Spring] Lombok

🚀 Lombok 보통 JAVA에서는 많은 멤버변수가 있고, Getter, Setter, toString 등 직접 코드를 입력해줘야 하는데, Lombok은 VO/DTO/Domain 객체에 필요한 Getter Setter, toString 메서드, 생성자 등을 자동으로 생성을 해 반복 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다. Lombok은 여러가지 어노테이션을 제공하고, 이를 기반으로 반복 소스코드를 컴파일 과정에서 생성해주는 방식으로 동작하는 라이브러리이다. 🚀 어노테이션 1. @Getter / @Setter 특정 필드 위에서 어노테이션을 붙여주면, 자동으로 생성된 접근자와 설정자 메서드를 사용할 수 있다. 클래스 위에 붙여주는 경우에는 모든 필드에 접근자와 설정자가 자동으로 생성된다 @..

Backend/SPRING 2022.07.29