study/Spring boot (37) 썸네일형 리스트형 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - 머스티치로 화면을 구성할 때 이동욱 님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. 외부 CDN을 사용해서 화면을 구성할 수 있다. 페이지 로딩 속도를 높이려면 css는 header에, js는 footer에 둔다. -> head가 다 실행되고서야 body가 실행된다. bootstrap.js의 경우 제이쿼리가 꼭 있어야만 한다. -> 제이쿼리에 의존한다고 한다. 막간 머스티치 문법 {{>layout/header}} : 현재 파일 기준으로 layout/header를 찾아온다. {{#posts}} : posts라는 리스트를 순회한다. {{id}} : 리스트에서 뽑아낸 객체 필드를 사용한다. 실무에서는 복잡한 쿼리가 필요하기 때문에 직접 쿼리를 짠다. 그 때 사용.. 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - 템플릿 엔진, mustache 이동욱 님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. 웹 개발에서의 템플릿 엔진 : 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어. 서버 템플릿 엔진은 서버에서 구동된다. 서버에서 java 코드로 문자열을 만든 뒤, 이 문자열을 html로 변환하여 브라우저로 전달한다. 클라이언트 템플릿 엔진은 브라우저 위에서 작동한다. 자바스크립트 코드가 실행되는 장소는 서버가 아닌 브라우저이다. Vue.js, React.js를 이용한 SPA(Single Page Application)는 브라우져에서 화면을 생성한다. -> 서버에서는 이미 코드가 벗어난 경우다. -> 서버에서는 json, xml 형식의 데이터만 전달.. 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - JPA(2) 이동욱 님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. API를 만들기 위해 세 가지 클래스가 필요하다. * Request 데이터를 받을 DTO * API 요청을 받을 Controller * 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service -> 여기서 Service는 트랜잭션, 도메인 간의 순서 보장의 역할만 한다. 스프링 웹 계층을 살펴보자 Web Layer : 뷰 템플릿의 영역. 컨트롤러, JSP 등. 더불어 외부 요청과 응답에 대한 전반적인 영역. Service Layer : @Service에 사용되는 영역. 일반적으로 컨트롤러와 DAO의 중간 영역에서 사용된다. -> @Transactional이 사영되어야 하는.. 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - JPA(1) 이동욱 님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. JPA는 자바 표준 ORM 기술이다. 웹 애플리케이션에서는 거의 관계형 데이터베이스가 필수이다. 따라서 객체를 관계형 데이터베이스에서 관리하는 것이 중요하다. 하지만 객체지향 언어를 사용한다면 여러 문제가 생긴다. 1. 프로젝트의 대부분이 코드보다 SQL이 가득해짐. -> 관계형 데이터베이스는 SQL로만 조작할 수 있다 보니, CURD에 대한 SQL을 매번 생성해야 한다.(했다.) 2. 패러다임 불일치. -> RDB는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이고 -> 객체지향 프로그래밍 언어는 기능과 속성을 한 곳에서 관리하는 기술이다. -> 이 둘의 시작점 조차 다르.. 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - 테스트 코드, 패키지 구조 등등... 이동욱님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. 테스트 코드는 중요하다. 대부분 단위 테스트를 필수조건으로 한다. 헷갈리면 안되는 것이 TDD와 단위 테스트는 다른 것이다. TDD = 테스트가 주도하는 개발. (Test Driven Develepment) 1. 실패하는 테스트 코드를 먼저 작성하고 2. 테스트를 통과하는 프로덕션 코드를 짜고 3. 성공하는 프로덕션 코드를 리팩토링한다. 단위 테스트 = TDD의 첫 번째 단계인 "기능 단위의 테스트 코드"를 작성하는 것. 왜 테스트 코드를 작성해야 하나? 왜 중요한가? * 개발단계 초기에 문제를 발견하도록 도와준다. * 나중에 코드를 리팩토링하거나, 라이브러리가 업그레이드 되.. 삽질 - 스프링 부트 테스트 코드 에러 날 때(Run with ....) 두번이나 당했다. 실제 애플리케이션을 잘 실행되는데, 테스트 코드만 이렇다. 스프링 이니셜라이즈에서 만든 프로젝트는 이런 일이 없던 것 같은데, 최근에 다른 프로젝트를 가져왔을 때나, gradle 프로젝트에서 스프링 프로젝트를 만들어서 테스트 코드를 실행할 떄 계속 이런 에러가 났다. "Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0." -> 지원 중단된 그래들 기능이 사용됐다고 한다. 다른 블로그 글들을 찾아보니 그래들 버전을 수정하는 방법은 아니고. 테스트할 때, 그래들이 아닌 인텔리제이를 사용해 테스트 하도록 바꿨다. 그런데 나는 이렇게 해도 실패했다. 다른 방법을 찾았다. 이번 기회에.. 스프링 부트 프로젝트 시작할 때, 몰랐던 것 - build.gradle, .gitignore 사용하기 보통 강의나, 책을 보면 스프링 이니셜라이즈를 사용하여 프로젝트를 시작했다. 그래서 build.gradle은 중간에 라이브러리 추가할 때 말고는 잘 안봤는데, 이동욱님의 책 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 기본적인 것들, 팁들을 많이 알았다. 이글의 출처이다. 이 책에서는 인텔리제이에서 그래들 프로젝트를 만든 후 스프링 부트를 받았다.(신기방기) 아래 코드는 그래들 프로젝트를 설정한 후, build.gradle에 코드들을 추가한 것이다. 그래들의 버전은 6.8이다. 그래들은 책한권이 나올정도로 내용이 많다. 간단하게 알아보겠다. plugins 블로에 있는 코드는 플러그인 의존성들을 적용한다는 것이다. 특히 io.spring.dependency-management' 는 의존성들.. 스프링 부트 - 외부 API 호출하기, WebClient 사용하기 지금까지 스프링 부트 공부를 하면서 API를 만들어보고 브라우저, 프로그램 등에서 호출은 해봤지만, 스프링부트 애플리케이션에서 외부 API를 호출하는 법은 따로 공부해본적이 없다. 스프링에서 외부 API 호출에 대한 구글링을 해보니 대부분 restTemplate이란 클래스를 사용했다. 하지만 공식 문서에서 보면 이 클래스는 유지 정도의 지원만하기 때문에, WebClient를 사용하기를 권장한다. WebClient를 사용하기 위해 먼저 build.gradle에 라이브러리를 추가한다. 그리고 static 메소드를 사용해 생성한다. 그 이후 방법은 링크에 잘 나와있다. howtodoinjava.com/spring-webflux/webclient-get-post-example/ Spring WebClient -.. 이전 1 2 3 4 5 다음