본문 바로가기

Spring

(28)
[Spring] [Spring JDBC] 3. Spring JDBC 실습 진행 들어가기 전 maven archetype의 maven-archetype-quickstart로 프로젝트를 생성하였다. spring Initializer로 하지 않았다는 것을 알고 있자. (정확한 차이는 모르겠지만, maven-archetype-quickstart으로 진행하는 것이 dependency 설정을 더 자잘하게 해주는 느낌이다. spring-context, spring-jdbc, spring-tx 를 추가하기 때문) 1. pom.xml에 필요한 dependency 추가하기 spring-context spring-jdbc spring-tx mysql driver datasource(apache에서 제공하는 datasource) org.springframework spring-context ${spri..
[Spring] [Spring JDBC] 2. Spring JDBC 실습 개요 DTO란? DTO란 Data Transfer Object의 약자입니다. 계층간 데이터 교환을 위한 자바빈즈입니다. 여기서의 계층이란 컨트롤러 뷰, 비지니스 계층, 퍼시스턴스 계층을 의미합니다. 일반적으로 DTO는 로직을 가지고 있지 않고, 순수한 데이터 객체입니다. 필드와 getter, setter를 가진다. 추가적으로 toString(), equals(), hashCode()등의 Object 메소드를 오버라이딩 할 수 있습니다. DTO의 예 public class ActorDTO { private Long id; private String firstName; private String lastName; public String getFirstName() { return this.firstName; } ..
[Spring] [Spring JDBC] 1. Spring JDBC 개요 Spring JDBC가 지원하는 기능 - 개발자가 할 일은? SpringJDBC 패키지 org.springframework.jdbc.core JdbcTemplate 및 관련 Helper 객체 제공 org.springframework.jdbc.datasource DataSource를 쉽게 접근하기 위한 유틸 클래스, 트랜젝션매니져 및 다양한 DataSource 구현을 제공 org.springframework.jdbc.object RDBMS 조회, 갱신, 저장등을 안전하고 재사용 가능한 객제 제공 org.springframework.jdbc.support jdbc.core 및 jdbc.object를 사용하는 JDBC 프레임워크를 지원 JdbcTemplate org.springframework.jdbc.cor..
[Spring] [Test] 단위테스트 작성하기 (1) - Mock객체 통합테스트 vs 단위 테스트 통합테스트 빈들 간에는 다양한 관계를 갖는 경우가 많다. 따라서 하나의 빈을 사용한다는 것은, 관계된 빈들도 함께 동작한다는 것을 의미한다. 따라서, "하나의 빈을 테스트할 때, 관련된 빈들이 모두 잘 동작하는지 테스트하는 것"을 통합테스트라고 한다. 단위테스트 하나의 빈을 테스트 할 때, "관계된 빈들과는 상관없이 해당 빈이 가지고 있는 기능이 잘 동작하는지만 확인하는 것"을 단위테스트라고 한다. 단위테스트를 위해, 관계된 빈을 Mock 객체로 대신하게 된다. 단위테스트 해보기 의존성 주입 mockito-core와 mockito-junit-jupiter를 추가해주자 mockito-core : mockito가 제공해주는 기본적인 라이브러리 mockito-junit-jupite..
[Spring] [Test] 스프링 테스트 어노테이션들(@ExtendWith, @SpringBootTest 등) 스프링 부트를 사용하지 않는 경우 JUnit4 @RunWith 기존 테스트 클래스 위에 @RunWith(SpringJUnit4ClassRunner.class)를 붙입니다. @RunWith 어노테이션은 JUnit이 제공하는 어노테이션입니다. JUnit은 확장기능을 가지는데, 스프링에서는 JUnit을 확장하도록 SpringJUnit4ClassRunner.class를 제공합니다. 해당 코드는 JUnit이 테스트 코드를 실행할 때 스프링 빈 컨테이너가 내부적으로 생성되도록 합니다. @ContextConfiguration @ContextConfiguration(classes = {ApplicationConfig.class})은 내부적으로 생성된 스프링 빈 컨테이너가 사용할 설정파일을 지정할 때 사용합니다. JUn..
[Spirng] [Test] JUnit 테스트 시작해보기 & 자주 사용하는 어노테이션 어떤 메서드를 만들고 나서, 해당 메서드가 잘 동작하는지 테스트 해보는 것은 매우 중요한 일이다. 자바에서 JUnit이라는 라이브러리를 제공하는데, 이에 대해 알아보자. 언어별로 테스트를 위한 프레임워크가 있는데, xUnit으로 이름이 붙는다. 자바의 경우, JUnit이 테스트를 위한 프레임워크이다. 사실, JUnit을 사용하려면 JUnit 라이브러리가 클래스패스(CLASSPATH)에 존재해야 한다. 하지만, 빌드 도구(gradle, maven)를 사용하면, JUnit을 디펜던시로 추가하여 편리하게 사용할 수 있다. 한편, 아주 편리한 스프링부트를 사용하면, 기본적으로 springboot-starter-test 디펜던시가 추가되기 때문에, 아예 신경쓰지 않아도 된다. 참고로, 스프링부트는 2.7.3버전 ..
[Spring] 컨테이너에 빈을 등록하는 방법 (1. xml파일 2. java config 파일) 스프링 컨테이너는, 객체를 빈으로 등록한 후, IoC와 DI를 진행한다. 컨테이너에 빈으로 등록하는 방법은 2가지가 있는데, 아래와 같다. 추가적으로, 스프링 컨테이너는 기본적으로 빈을 싱글톤으로 관리한다. (싱글톤 : 객체의 인스턴스가 오직 1개라는 뜻) 1. xml 파일 아래와 같이, main 아래 resource 패키지에 위치하게 된다. 아래와 같이 id와 class를 주면, bean을 등록할 수 있다. property 설정 또한 가능하다. 2. java Config 파일 java config 클래스로 빈을 등록할 수 있다. config 클래스로 빈을 등록하는 방법 1 자바 class 위에 @Configuration을 붙인다 @Bean으로 객체를 빈으로 직접 등록한다 config 클래스로 빈을 등록..
[Spring] 컨테이너, IoC, DI, Bean 컨테이너 컨테이너는 인스턴스의 생명주기를 관리하며, 생성된 인스턴스에게 추가적인 기능을 제공합니다. 예를 들어, Servlet을 실행해주는 WAS는 Servlet 컨테이너를 가지고 있다고 말합니다. WAS는 웹 브라우저로부터 서블릿 URL에 해당하는 요청을 받으면, 서블릿을 메모리에 올린 후 실행합니다. 개발자가 서블릿 클래스를 작성했지만, 실제로 메모리에 올리고 실행하는 것은 WAS가 가지고 있는 Servlet 컨테이너입니다. Servlet컨테이너는 동일한 서블릿에 해당하는 요청을 받으면, 또 메모리에 올리지 않고 기존에 메모리에 올라간 서블릿을 실행하여 그 결과를 웹 브라우저에게 전달합니다. 컨테이너는 보통 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하는 것을 말합니다...