본문 바로가기

장생농

(138)
삽질 - 스프링 부트 테스트 코드 에러 날 때(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' 는 의존성들..
테이블에서 데이터 검색 SQL 첫걸음이란 책을 읽으면서 정리중. 해당 챕터는 명령어 설명이 많이 나온다. 명령어는 다른 좋은 글들이 많기 때문에 자세한 것이 알고싶을 때는 그때그때 검색하면 될 것 같고, 여기서는 큼지막하게, 중요한 것 같은 것만 정리. sql 헬로 월드. SELECT * FROM sample; : 각 키워드마다 띄어쓰기를 해야 한다. 문장 끝에는 세미콜론을 붙여야 한다. 각 키워드를 분석해보자. SELECT : 명령의 종류이다. select는 데이터를 읽어오는 명령어다.* : 모든 열을 의미하는 문자.FROM : 처리 대상 테이블을 지정하는 키워드이다.sample : 테이블의 이름이다.=> sample이라는 테이블에서 모든 열의 데이터를 가져오라는 명령어다. 다른 프로그래밍 언어와 마찬가지로 예약어가 존재한다..
데이터베이스와 SQL SQL 첫걸음이란 책을 읽으면서 정리중. 데이터베이스 : 데이터의 집합. 통용되는 개념은 특정 데이터를 확인하고 싶을 때, 간단하게 찾아낼 수 있도록 정리된 형태.(계산대 데이터, 핸드폰의 연락처, ...) DBMS : 데이터베이스 관리 시스템(Database Management System). 사용 목적은 생산성 향상, 기능성, 신뢰성 확보에 있다. 생산성 : 데이터 검색, 추가, 삭제, 갱신과 같은 기본 기능을 제공한다. 시스템 개발 과정에서의 생산성 향상을 도모할 수 있다. 기능성 : 데이터베이스를 다루는 기능을 제공한다. 다수 유저의 요청을 대흥, 대용량 데이터를 저장하고 고속으로 검색 등의 기능을 제공한다. 신뢰성 : 여러 하드웨어로 구성된 데이터베이스에 대해 확장성(Scalability), 부..
객체가 담긴 List 정렬 - stream을 활용해서 복잡한 정렬하기. 실은 그다지 복잡한 정렬은 아니다.(실은 나한텐 복잡하다) 가정: Student라는 클래스가 있다. 이것은 수업 점수가 담긴 Map Score를 갖고 있다. 그런데 학생마다 Score에 담긴 값이 다르다. 어떤 학생은 수학 수업을 듣지 않아, math에 대한 점수가 없고, 어떤 학생은 컴퓨터 수업을 듣지 않아 computer에 대한 점수가 없다. 여기서 나는 과목 점수를 기준으로 학생들을 정렬할 것이다. 따라서 어떤 학생은 기준이 되는 과목이 없을 수도 있다. 처음에 compareTo메소드를 사용하려고 했으나, 기준이 명확하지 않고, 보편적인 것이 아니기 때문에 포기했다. => 내가 방법을 못찾은 것이지, compareTo 메소드를 사용해서 할 수도 있을 것이다. 그 후에 방법을 고민하다 IDE의 자동완..
스프링 부트 - 외부 API 호출하기, WebClient 사용하기 지금까지 스프링 부트 공부를 하면서 API를 만들어보고 브라우저, 프로그램 등에서 호출은 해봤지만, 스프링부트 애플리케이션에서 외부 API를 호출하는 법은 따로 공부해본적이 없다. 스프링에서 외부 API 호출에 대한 구글링을 해보니 대부분 restTemplate이란 클래스를 사용했다. 하지만 공식 문서에서 보면 이 클래스는 유지 정도의 지원만하기 때문에, WebClient를 사용하기를 권장한다. WebClient를 사용하기 위해 먼저 build.gradle에 라이브러리를 추가한다. 그리고 static 메소드를 사용해 생성한다. 그 이후 방법은 링크에 잘 나와있다. howtodoinjava.com/spring-webflux/webclient-get-post-example/ Spring WebClient -..
삽질 - 스프링부트, Mustache 줄바꿈 표현하기 스프링 부트로 게시판을 만들 때, 본문 내용에는 줄바꿈이 들어간다. 로그를 찍어보면 입력 받을 때는 줄바꿈을 잘 반영하여 데이터를 받는다. 그런데 데이터베이스에는 한줄로 저장된다. 결국 저장하는 과정에서 줄바꿈(\n)이 무시되는 것 같다. DB에 저장되어 있는 글의 enter 값을 태그로 변환 우선 원하는 값을 가져온다. String temp = request.getParameter("contents"); temp에는 textarea로 통해 입력된 모든 값이 들어가 있다. 이때 Enter 값은 \r\n으로 저장이 되어 있기 때문에 \r\n을 로만 바꾸어.. snoopy81.tistory.com 해결방법을 찾아보니 html에서는 엔터가 \r\n으로 입력되는 이것을 태그로 바꿔주면 된다고 한다. 그러면 br..
고민과 해결 - spring boot, mustache 폼 태그에서 어떻게 put, delete 전송을 할 수 있을까? html에서는 get, post 전송만 된다고 한다. 실제로 mustache 파일에서 메소드를 put으로 설정하여, @PutMapping이 붙은 컨트롤러 메소드에게 요청을 보냈는데 에러가 났다. 찾아보니, 내가 자바스크립트를 사용하지 않고도, 수정 가능해 보이는 방법이 있었다. REST PUT, DELETE 사용하기 REST PUT, DELETE를 사용하기 위해 GET, POST와는 달리 다소 노력이 필요하다. HTML form 태그의 method 속성으로 GET, POST만을 지원하기 때문에 PUT, DELETE로 설정하면 엉뚱하게도 GET 요청으로 전송된다. Ajax.. devday.tistory.com 먼저 위 방법을 사용하기 위해 application.properties에 항목을 추가한다. spr..