본문 바로가기

개발/스프링28

[Spring] MockMVC를 이용한 Controller 테스트 (GET) 개요 Spring 환경에서 테스트 코드를 작성할 때 자주 사용하게 되는 MockMVC, 그 중에서도 GET에 대해 아주 간단히 다루어 보겠습니다. 목차 배경 MockMVC 소개 MockMVC를 이용한 Controller GET 테스트 MockMVC GET 자세히 알아보기 1. 배경 업무 중 특정 기록을 조회하는 기능을 개발하고 있었습니다. 앞단에서 검색 파라미터 (칼럼별 속성, 검색기간, 페이징 개수 등)를 설정해서 넘겨 주면, Controller -> Service -> DAO -> MyBatis 쿼리를 실행하는 루틴을 전부 개발하게 되었습니다. 개발한 컨트롤러가 의도대로 동작하는지 확인하려면 어떻게 해야 할까요? 테스트 코드가 없다면, Tomcat을 띄우고, 로컬 환경에서 사이트에 접속한 후, 해당 .. 2022. 6. 20.
[Spring] 스프링과 객체지향 프로그래밍 (1) 개요 스프링을 공부하며, IoC와 DI 개념에 대해서 공부하긴 했어도, 저를 포함하여 많은 분들에게는 와닿지 않을 것입니다. 스프링을 공부하기 이전에, 스프링은 왜 탄생했고, 스프링 이전에는 어떻게 개발을 하였으며, 어떤 과정으로 스프링이 탄생했는지 구체적으로 짚고 넘어가고자 합니다. 스프링의 탄생 배경, 객체지향 프로그래밍과 다형성 등 스프링의 핵심 이념에 대해 다루어 보았습니다. 목차 스프링이란? 스프링 탄생의 배경과 스프링의 진짜 핵심 객체지향 프로그래밍과 다형성 역할과 구현의 분리 좋은 객체지향 설계의 5가지 원칙 (SOLID) - (2)에서 계속 1. 스프링이란? 보통 스프링이라고 하면, 특정한 하나의 기술을 가리키는 것이 아니라, 여러 기술의 모음을 가리킵니다. 스프링 프레임워크: 필수. 스프.. 2022. 4. 17.
[Spring] 스프링의 DB 접근 기술 간단 소개 개요 2003년에 스프링이 최초로 공개된 이래로, 스프링은 DB에 접근하는 방법을 꾸준히 발전시켜 왔습니다. 객체지향 관점에서 개발하는 스프링과, 관계를 중심으로 데이터를 저장하는 RDBMS는 접근 방식부터 차이가 있기 때문에, 이 둘을 함께 이용하여 개발하기란 쉽지 않습니다. 이 글에서는 Java와 스프링의 DB 접근 기술이 어떻게 발전되어 왔는지 순서대로 나열하여 소개해 보고자 합니다. (iBatis/MyBatis는 이 글에서는 다루지 않았습니다.) 순수 JDBC Spring JdbcTemplate JPA 스프링 데이터 JPA 1. 순수 JDBC JDBC는 Java Database Connectivity의 약자로, Java 환경에서 DB에 접근하기 위한 표준 API입니다. JDBC는 Spring 프레.. 2022. 3. 16.
[Spring] 의존성 주입의 세 가지 방법 @Deprecated 이 글은 오래되었으며, 제가 이후 더 공부하고 나서 새로 작성한 글이 있습니다. 이 글보다 더 자세하고 깊이 있게 작성되어 있으니 새로 작성한 글을 참고해 주세요! (2022. 07. 11) 앞서 스프링의 의존성 주입에 대한 글을 몇 가지 쓴 바 있습니다. (IoC와 DI, 테스트 코드와 의존성 주입, Bean 의존 관계 설정) 이러한 의존성을 주입하는 방법이 대표적으로 세 가지가 있는데요. 각 세 가지 방법에 대해 다루어 보고자 합니다. 1. 필드 주입 2. setter 주입 3. 생성자 주입 1. 필드 주입 필드 주입은 아래와 같은 방식으로 이루어집니다. public class PurchaseController { @Autowired private PurchaseService p.. 2022. 3. 10.
[Spring] Bean 등록 및 의존 관계 설정하기 개요 Spring에서는 객체를 bean (빈)이라는 이름으로 부릅니다. 이러한 bean은 Spring이 시작할 때 Spring container에 등록되어, Spring에 의해 관리되고 쓰여집니다. 앞서 스프링의 MVC 구조에 의해 언급했었는데요. View에 원하는 내용을 그리기 위해서는 Controller를 작성해야 합니다. Controller는 Service에 작성된 메소드를 호출하여, 요구되는 역할을 수행합니다. Service는 Repository에 접근하여, 데이터를 읽어 오거나, 저장 및 수정합니다. 만약 특정 사이트의 상품 주문 기능이 있다면, Controller는 View를 이용해 화면을 나타내는 역할을 합니다. Controller는 Service를 이용해서 실제 주문을 수행하고, Servi.. 2022. 3. 9.
[Spring] 스프링에서의 테스트 코드와 의존성 주입 의존성 주입 (Dependency Injection; DI)에 대해 글을 작성한 바 있습니다. (글은 여기를 참고) 실제로 의존성 주입이 언제 발생하는지 예시를 하나 들어서 설명해 보고자 합니다. Service 및 테스트 코드 작성 아래와 같은 Service 클라스가 있다고 합시다. MemberService.java public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); // 회원 가입 public Long join(Member member) { //같은 이름이 있는 중복 회원 X validateDuplicatedMember(member); //중복 회원 검증 mem.. 2022. 3. 5.