'스프링 입문' 시리즈에서는 Spring의 전반적인 프로세스를 한번 가볍게 훑어볼 예정입니다.스프링 프로젝트 생성스프링 부트로 웹 서버 실행회원 도메인 개발웹 MVC 개발 DB 연동 - JDBC, JPA, 스프링데이터 JPA테스트 케이스 작성Spring BootJPAG
Java 11 설치IDE : IntelliJ 또는 Eclipse 설치https://start.spring.io/project maven, gradle ? 필요한 라이브러리를 땡겨서 오고 빌드 라이프 사이클까지 관리해주는 툴. maven -> gradle 로
gradle 이나 maven 같은 툴들은 의존관계를 관리해준다.처음에 프로젝트 생성시, spring-boot-starter-web이라는 라이브러리를 체크했었는데, 이 라이브러리를 쓰기 위해 필요한 부수적인 라이브러리들을 다운 받는 등 관리를 해주는 것!
정적 페이지를 만들어보자.resources/static/index.htmlthylmeleaf를 사용하여 동적 웹페이지를 만들어보자.웹애플리케이션에서, 첫번째 진입점이 Controller 이다.HelloController.javahello.html컨트롤러에서 return
터미널로 이동$ ./gradlew build$ cd build/libs$java -jar hello-spring-0.0.1-SNAPSHOT.jar실행확인안되면 $ ./gradlew clean build 으로 build 폴더를 삭제하여 완전 다시 새롭게 빌드해보자이렇게
resources/static/hello-static.html컨트롤러가 우선순위가 가장 높다. 그렇기에 먼저 컨트롤러를 확인 후, 없으면 resources/static폴더를 뒤지는 순서인 것!
과거에는... View 와 Controller를 한군데다 작성했었다. View 안에서 DB도 접근하고 컨트롤러 로직도 View에 있고... 하나의 View 파일안에 어마어마한 코드가 들어갈 수 밖에...지금은, 따로 작성! 컨트롤러와 뷰를 쪼개는 게 기본!뷰는 화면과
정적 컨텐츠를 전달하는 방법에는 크게 두 가지가 있다템플릿 엔진을 사용하는 방법API여기서 알아볼 API방식은 View 즉 html 같은 것이 없다.우선, 달랑 스트링만 반환할 수 있게 해보자. html 템플릿 말고!http://localhost:8080/he
데이터: 회원ID, 이름기능: 회원등록, 조회아직 데이터 저장소가 선정되지 않음(가상의 시나리오)컨트롤러: 웹 MVC의 컨트롤러 역할서비스: 서비스는 리포지토리의 객체를 사용한다. 핵심 비즈니스 로직 구현. 예)회원은 중복가입을 할 수 없다 리포지토리: 데이터베이스에
domain/Member.javarepository/MemberRepository.javarepository/MemoryMemberRepository.java다음 포스팅에는 제대로 잘 작동하는지 테스트 하는 테스트 케이스를 작성해볼 것이다.
개발한 기능을 테스트할 때 자바의 main메서드를 실행하거나, 웹 애플리케이션의 컨트롤러를 통해 해당 기능을 테스트해볼 수 있다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다. 자바는 JUni
회원 서비스 클래스를 만들어보자회원 서비스는, 회원 도메인과 회원 리포지토리를 활용해서 실제 비즈니스 로직을 작성한다.MemberRepository, 즉 리포지토리에서는 save, findById, findByName 처럼 단순히 데이터를 저장소에 넣었다뺐다 하는 느낌
회원 서비스 클래스를 테스트해보자MemberService.java에서 단축키 ctrl + shift + T 를 눌러 테스트 껍데기를 자동생성할 수 있다.테스트 케이스를 작성할 때는,이렇게 주석을 달아주면, 훨씬 의미를 파악하기 좋다.MemverServiceTest.j
지금까지, Service 와 Repository, Member 객체를 만들었다.Service 를 통해 멤버가 join할 수 있고, 리포지토리에 저장되고, 또 리포지토리에서 꺼내올 수 있고.. 이런 로직들을 만들었다. 테스트도 만들고...이제는, 화면을 좀 붙이고 싶은데
회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 어노테이션을 제거하고 진행한다. 하나하나 직접 스프링에 등록해보는 방식을 써보겠다.앞서 말했듯, 컴포넌트 스캔방식으로 자동으로 스프링에 등록하는 방법이 있고, 직접 설정파일에
이전시간, MemberController도 만들고 의존관계도 설정해놓음이제 이 MemberController를 통해 회원을 등록하고 조회하는 걸 만들어보자!전체코드는 여기에MemberController.java
지금은 메모리에 데이터를 저장해놨기 때문에, 서버를 껐다가 다시 켜면 당연히 회원 리스트가 다 사라져있을 것이다. 다음 포스팅에서는 DB에 회원 데이터를 저장해볼 것이다.
가볍고 심플한 H2 DB를 설치해서 현재의 메모리 리포지토리를 대체시킬 것이다.서버와 DB를 연결할 때 필요한 기술이 바로 JDBC인데, 20년 전 사용했던 순수 JDBC를 경험해볼 것임스프링이 제공해주는 스프링 JDBC 템플릿을 사용해볼 것임JPA를 사용해볼 것임스프
어떤 식으로 DB를 다루어왔었는지의 역사를 알아보자build.gradle 파일에 jdbc, h2데이터베이스 관련 라이브러리 추가자바는, DB에 접근하려면 JDBC 드라이버가 꼭 있어야 한다.DB에 붙으려면 접속정보 같은 것을 넣어야 하는데, 요즘에는 스프링 부트가 다
스프링 컨테이너와 DB까지 연결한 통합 테스트를 진행해보자이전의 테스트 코드들을 보면, 스프링과는 상관없는 순수 자바코드를 테스트했었었다.그런데 이제는 순수한 자바코드를 가지고 테스트할 수 없게 되었다. 왜냐, DB 커넥션 정보도 스프링부트가 들고 있고 그러니까..그래
JDBC에서는 findById 를 하려면 꽤 복잡했음.단 두 줄로 findById가 가능하다.JDBC 코드를, 템플릿메서드니 뭐니 이것저것 다 써서 아주 줄이고 줄이고 줄인 것이 이 Jdbc Template 라이브러리이다.jdbcTemplate인 이유는, 디자인 패턴중
JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL 도 JPA 가 직접 만들어서 실행해준다JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다.JPA를 사용하면 개발 생산성을 크게 높일 수 있다JPA는 인터페이스고, 구현
스프링부트와 JPA만 사용해도 개발 생산성이 정말 많이 증가하고, 개발해야할 코드도 확실히 줄어든다. 여기에 스프링 데이터 JPA를 사용하면, 리포지토리에 구현 클래스 없이 인터페이스만으로개발을 완료할 수 있다...!그리고 반복 개발해온 기본 CRUD 기능도 스프링 데
모든 메소드의 호출 시간을 측정하고 싶다면공통 관심 사항(cross-cutting concern) vs 핵심 관심사항(core concern)회원 가입 시간, 회원 조회 시간을 측정하고 싶다면?이런 식으로 모든 메서드에 끼워넣어주어야 하는데......만약 메서드가 10
AOP : Aspect Oriented Programming공통 관심사항과 핵심 관심사항 분리TimeTraceAop.java해결회원 가입, 회원 조회 등 핵심 관심사항과 시간을 측정하는 공통 관심사항을 분리한다시간을 측정하는 로직을 별도의 공통 로직으로 만들었다원하는