목록Spring (36)
Rootable의 개발일기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cy75sY/btsdaZINJCX/s8jQwUuGncTPampqSKTOEK/img.png)
📌 순수 JDBC(Java Database Connectivity) DB 에서 접근하기 위해 선언해야 할 것들이 많고, try~catch 문에서 이들을 연결해야 한다. 또한, DB 에 전달할 데이터를 바인딩하는 작업도 직접 해줘야 하며, 쿼리 또한 직접 작성해야 한다. 마지막으로 연결을 해제하는 작업도 직접 작성해야 한다. @Slf4j @RequiredArgsConstructor public class JdbcMemberRepository implements MemberRepository { private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource) { this.dataSource = dataSource; ..
📌 Component Scan 스프링은 @Component 라는 애노테이션이 붙은 객체를 애플리케이션이 실행하는 시점에 스캔한다. 이 때, 스캔된 객체는 스프링 컨테이너에서 스프링 빈으로서 관리되어 스프링이 필요한 시점에 객체를 생성하고 관계를 맺도록 해준다. @Component 라는 애노테이션을 상속받은 애노테이션은 대표적으로 @Controller, @Service, @Repository 등이 있다. 📌 자바 코드로 스프링 빈 직접 등록 별도 설정 클래스를 생성하여 @Configuration 애노테이션을 달아준다. 해당 애노테이션을 달게 되면 스프링에 이 파일이 설정 파일이고 빈을 등록하기 위한 파일이라는 것을 알려줄 수 있다. DI 컨테이너(스프링 컨테이너)는 @Configuration으로 등록된 설..
일반적으로 스프링을 공부하기 전에는 모든 class 에서 필요한 객체가 있으면 new 를 해서 생성 후 사용했다. public class MemberController { MemberService memberService = new MemberService; ... } Service 가 수행하는 기능은 프로젝트의 도메인 단위로 관련된 Controller 나 Repository 에서 공용으로 사용되는 경우가 일반적이다. 그런데, Service 를 매번 new 를 해서 생성하게 되면 2가지 문제점이 발생한다. 1. 두 클래스가 강하게 결합되는 문제 두 클래스가 강하게 결합될 경우, 다른 클래스로 교체해야 하는 상황이 발생한다면 생성자를 고쳐야 하거나 해당 객체를 사용하는 모든 소스 코드를 수정해야 한다. 즉..
📌 given - when - then Test 코드를 작성하는 노하우이다. given : set data, 테스트할 데이터를 셋팅 when : input data, 테스트할 메서드 혹은 작업을 수행 then : validation, Assertions 등을 통해 검증 📌 assertThrows assertThrows(기대하는 예외, () -> try 구문(예외 가능성이 있는 소스)) @Test public void 중복_회원_예외() throws Exception{ //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when mem..