If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. Spring boot 테스트를 위해 실행을 했는데 갑자기 누구세요 ..? 에러 발생이유엔 Spring Boot는 DataSource 를 필요로 하는 아래 같은 의존성이 추가만 되어 있어도 자동으로 DataSource 생성을 시도한다. 처음 프로젝트를 만들때 의존성도 추가를 할때 대부분 RestApi를 만들면 Lombok, Spring Web, Spring Configuration Processor 이정도만 초기 의존성으로 선택하고 하자 Gradle에 dependencies { implementation "com.h2database:h2" } h2를 추..
전체 글
imSoo TecBlog![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDcKJB%2FbtrTmtCEISc%2FapAXu1sPc0aYWZ3oRfCj3k%2Fimg.jpg)
기존 자바 컬렉션이나 배열의 원소를 가공할때 for문 foreach 등으로 원소 하나씩을 골라내어 가공했다면 stream을 이용하여 람다함수식으로 간결하고 깔끔하게 요소들의 처리가 가능하다. 스트림은 생성 , 중간연산 , 최종연산으로 나뉜다. - 생성 스트림은 한번 사용 후 생성한 스트림이 폐기되기때문에 다른곳에서 다시 사용할 땐 한번 더 생성 해주어야 한다. - 중간연산 (여러번 사용가능) filter() : 요소 정제 - 거르기 Stream에서 조건에 맞는 데이터만을 정제하여 더 작은 컬렉션을 만들어 낸다. filter() 메서드에서는 매개 값으로 조건(Predicate)이 주어지고, 조건이 참이 되는 요소만 필터링한다. distinct() : 중복제거 Stream의 요소들에 중복된 데이터가 존재하는..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiWIm4%2FbtrS5jZVNKx%2Fzs9kmotkz4Q1U2ClfdbyPK%2Fimg.png)
h2 란? JAVA기반의 RDBMS 별도의 설치과정이 없고 , 저용량에 빠르고 JDBC를 지원한다. 개발 및 테스트 용으로 많이 사용된다고함.. 1. Spring 연결 2. h2 콘솔 셋팅 3. 브라우저를 켜고 localhost:포트/h2-console 경로를 입력하면 그림과 같이 연결창이 나타 납니다 4. 2번 그림에 넣었던 jdbc url과 사용자명을 넣어준 후 연결 버튼을 누르면 끝 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4zinN%2FbtrSJDMboje%2FIDEzHjdSlvRD4LJUnFCWn0%2Fimg.png)
1. Map ( HashMap, Hashtable, LinkedHashMap, TreeMap ) Map은 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다. Map은 사물함을 연상할 수 있다. 사물함은 번호가 있고 그 안에 내용물이 있는것처럼 사물함번호가 Key값이 되고 그 안에 Value가 저장된다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. Map : 순서 X , key 중복 X value 중복 O 검색 ! 특별한 사유가 없다면 검색 성능이 좋은 HashMap을 사용 순서를 보장하고 싶다면 LinkedHashMap을 사용 키값을 일정하게 정렬 하고자한다면 TreeMap을 사용 맵의 특징 으론 키(key)와 값(value)의 쌍으로 이루어져 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHImLD%2FbtrSOxqhFdw%2FL3AMQTGD1nSom201nfftJk%2Fimg.png)
컬렉션 프레임 워크란 배열을 사용하다 보면 여러가지 비효율적인 문제가 생긴다. 가장 큰 문제점은 크기가 고정적이라는 것이다. 배열의 크기는 생성할 때 결정되며 그 크기를 넘어가게 되면 더이상 데이터를 저장할 수 없다. 또 데이터를 삭제하면 해당 인덱스의 데이터는 비어있어 메모리가 낭비되는 등 여러 문제점들이 발생한다. 그렇기에 자바는 배열의 이러한 문제점을 해결하기 위해, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)할 수 있는 자료구조들을 만들어 놓았다. 이러한 자료구조들이 있는 라이브러리를 컬렉션 프레임워크라고 합니다. 대표적으로는 List, Set, Map, Stack, Queue 등이 있다. 1. List ( ArrayList, LinkedLi..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk598M%2FbtrSMHzZV2k%2FG8zW8BKptpotLOQ3weGoak%2Fimg.png)
객체지향은 각 클래스들은 각자의 책임과 역활 이있다. 객체지향 프로그래밍은 유연하고 변경이 쉽게 만들기 위해 객체지향의 5대원칙이 있는데 이 원칙의 존재이유는 유지보수에 유리하고 유연하고 확장이 쉽게 만들기 위함이다. SRP (Single Responsibillty Principle) - 단일 책임 원칙 -한 클래스는 하나의 책임만 가져야 한다. -하나의 책임의 기준은 변경이다. 변경이 발생하였을 때, 변경해야 될 부분이 적으면, 단일 책임 원칙을 잘 따른것이다. 클래스를 변경해야하는 이유가 오직 하나여야 한다. ex)결제버튼의 위치가 변경되었지만, 결제기능에 대한 영향은 없다. OCP (Open/Closed Principle) - 개방 / 폐쇄 원칙 -확장에는 열려있고 변경에는 닫혀있어야 한다. -변경..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMLqpn%2FbtrSy8eHyjn%2F3PS7xxw5U4kYpWRV0kfshk%2Fimg.png)
java 8에서 가장 중요한 변화라 할 수 있는 람다 표현식의 등 ! 장 ! 등장이유 : 불필요한 코드를 줄이고, 코드의 이해를 돕습니다. (아 ㅎㅏ !) 람다 표현식은 메소드로 전달할 수 있는 익명함수를 단순화한 코드블록이다. 람다 표현식은 특정 클래스에 종속되지 않으며 함수라는 이름으로 명명합니다. 람다 표현식은 함수 자체를 전달 인자로 보내거나 변수에 저장하는 것이 가능합니다. 사용방법 : Runnable runnable = new Runnable(){ @Override public void run(){ #하나의 퍼블릭 메서드만 가지고 있을경우 !! 람다 사용가능 } }; Runnable runnable = ( ) -> { }; // Lambda 특정변수에 담을 수 있다.!! ( ) -> { ....
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F73fvs%2FbtrSz68kR3v%2Ffjn58G5CW0wVm9rGXtkpn1%2Fimg.png)
public final class Optional{ private final T value; // T타입의 참조변수 옵셔널을 사용하는 이유 : 모든 종류의 객체 저장가능 null 저장 가능 (nullPointException 을 막아줄 수 있다. ) !!!!!제일 중요!!!!!!! null 체크 ( if문 ) 필수 (nullPointException 체크 = 코드길어짐) ex) if (result != null) 해결방안 : 옵셔널에 null을 담아 옵셔널의 value값을 null 지정 [result t; (t안에 null을 담아서 NullPointException 해결)] 어떤 객체의 주소가 있으니 항상 null이 아니다. Optional 객체 생성방법 : 1. String str = "abc"; 2..