전체 글
-
지네릭스(Generics) - 지네릭 소개, 지네릭 클래스백엔드/자바 2021. 5. 21. 11:13
지네릭스란(Generics)란? 다양한 타입의 객체를 다루는 메서드, 컬렉션에 입력 가능한 객체를 제한하게 하는 기능이다. 좀 더 직관적으로 쓰자면 특정 메서드나 컬렉션에 들어가는 자료형을 제한하는 것이다. 지네릭스의 필요성 예를 들어 위와 같이 String 객체만 들어가길 원하는 ArrayList가 있다고 가정해보자. 기존에 잘 모를 때는 지네릭스 없이 위와 같은 형식으로 객체를 생성하고 사용했다. 하지만 이렇게 생성할 경우 코드는 줄지만 반대로 여러가지 문제점 있다. 예를 들어 위와 같은 상황처럼 데이터를 입력받고, 이걸 변수에 저장한 뒤 출력하는 코드를 가정해보자. 컴파일러가 실행(런타임) 전에 확인할 때는 어떠한 오류도 없다. 우선 실행 결과를 보도록 하자. 컴파일러는 문제가 없다고 했지만, 실제..
-
컬렉션 - Collections 클래스와 메서드백엔드/자바 2021. 5. 20. 19:37
Collections란? Arrays가 배열 관련 메서드를 제공하는 것처럼 Collections는 컬렉션과 관련된 메서드를 제공한다. Arrays, Collections, Objects와 같은 클래스들은 모두 Static 메서드를 제공한다. 그래서 객체 생성없이도 편리하게 다양한 기능을 이용할 수 있다. fill(), copy(), sort(), binarySearch() 등 기본 기능이 있으나 Arrays의 클래스의 메서드들과 기능이 동일하다. 동기화 - synchronizedXXX() 과거 Vector, Hashtable와 같은 자료구조 클래스들은 동기화가 처리되어있었다. 그래서 무슨 자료구조를 사용하든 기본적으로 동기화가 되었었다. 하지만 모든 프로그램이 멀티 쓰레드 프로그래밍을 하는 것이 아니다...
-
컬렉션 - Arrays 클래스와 메서드백엔드/자바 2021. 5. 20. 16:56
Arrays 클래스는 배열을 다루는데 유용한 메서드들이 정의되있다. 모든 메서드가 모든 Static으로 별도로 객체를 생성없이도 언제든 사용이 가능하다. 배열의 복사 - copyOf(), copyOfRange() copyOf()는 배열 전체를 복사해서 새로운 배열을 만들어서 반환한다. 반면 copyOfRange()는 지정한 범위만큼 복사를 해서 새로운 배열을 반환한다. 이때 copyOfRange()에 지정된 범위의 끝은 포함하지 않는다. public static void main(String[] args) { int arr [] = {0, 1, 2, 3, 4}; int arr1 [] = Arrays.copyOf(arr, arr.length); // {0, 1, 2, 3, 4} int arr2 [] = A..
-
16. 스프링부트와 AWS - 게시글 등록 화면 만들기실습/AWS 2021. 5. 8. 07:52
15. 스프링부트와 AWS - 부트스트랩과 제이쿼리 앞서 Index를 통해서 mustache가 제대로 실행되는 것을 확인해보았다. 이제 앞서 만든 내용을 바탕으로 게시글 조회, 등록, 수정 등의 화면을 만들어야 한다. 우선 그 전에 해당 프로젝트는 부트스트 sgcomputer.tistory.com 이전 글에서 레이아웃 방식을 통해 header, footer를 따로 만들어줬다. 이제 본격적으로 이걸 이용해서 게시판 화면을 구현해보자. 우선 포스트에서는 등록 화면부터 만들어보도록 하자. 화면 영역의 경우 기본 코드가 길기 때문에 일일이 치는건 무리가 있다. jojoldu/freelec-springboot2-webservice Contribute to jojoldu/freelec-springboot2-webs..
-
15. 스프링부트와 AWS - 부트스트랩과 제이쿼리실습/AWS 2021. 5. 8. 07:14
앞서 Index를 통해서 mustache가 제대로 실행되는 것을 확인해보았다. 이제 앞서 만든 내용을 바탕으로 게시글 조회, 등록, 수정 등의 화면을 만들어야 한다. 우선 그 전에 해당 프로젝트는 부트스트랩, 제이쿼리를 이용하므로 준비할 것이 몇 가지 있다. 부트스트랩, 제이쿼리 모드 라이브러리로서 매번 mustache에 코드를 추가해야한다. 이는 중복되는 코드이므로 이를 레이아웃 방식으로 mustache에 삽입해줄 예정이다. 레이아웃 방식으로 라이브러리 추가하기 우선 이전에 만든 "/src/main/resources/templates" 폴더 안에 layout폴더를 만든다. 이제 layout폴더 안에 캡쳐샷처럼 "header.mustache", "footer.mustache"를 생성해준다. header...
-
14. 스프링부트와 AWS - 머스테치 설정하기 및 index 만들기실습/AWS 2021. 5. 8. 06:02
지금까지는 기본적인 데이터 베이스 읽기, 쓰기, 수정하기 기능을 만들어봤다. 이제는 해당 기능을 바탕으로 화면 구현을 하도록 하자. 템플릿 엔진이란? 특정 템플릿 양식과 데이터 베이스에서 불러온 데이터를 합성해 결과물을 만드는 소프트웨어. 템플릿 엔진의 종류 크게 서버 사이드 템플릿 엔진과 클라이언트 사이드 템플릿 엔진으로 나뉜다. 서버 템플릿 엔진은 서버에서 결과물을 만들어서 브라우저를 통해 사용자에게 전달한다. 반면 클라이언트 템플릿 엔진은 서버에서는 Json, xml 형식의 데이터만 브라우저에 전달한다. 그리고 브라우저에서 고객이 요청한 내용대로 결과물을 만들어서 전달하는 역할을 한다. 흔히 스프링과 함께 배우는 JSP같은 경우는 서버 템플릿 엔진으로 볼 수 있다. 머스테치란? 머스테치는 템플릿 엔..
-
13. 스프링부트와 AWS - JPA Auditing으로 시간 자동 등록하기실습/AWS 2021. 5. 8. 04:28
지금까지 API를 만들면서 게시글 기능에서 빠져있는게 있다. 바로 시간이다. 보통 인터넷 게시판을 이용해보면 알겠지만 시간이 표기되어있다. 하지만 우리가 작성한 코드에는 내용이 없는데, 이에 대해서 JPA Auditing 기능을 사용해보자. JPA Auditing이란? 모든 게시물에는 일반적으로 시간 개념을 넣어준다. 그렇다보니 게시물을 등록, 수정할 때 매번 같은 코드를 필연적으로 넣어야 한다. 이로 인해 같은 코드를 매번 넣어줘야해서 귀찮아지고 코드가 지저분해지기 마련이다 이럴 때 JPA가 제공하는 Auditing이란 기능을 사용하면 된다. Auditing은 데이터가 입력, 수정 될 때마다 감시해 자동으로 시간을 입력해주는 기능을 한다. BaseTimeEntity클래스 생성 우선 "/src/main/..
-
12. 스프링부트와 AWS - H2 Database로 로컬 테스트해보기실습/AWS 2021. 5. 8. 03:31
이전까지 테스트를 통해서 API가 작동하는 것을 확인할 수 있었다. 하지만 실제로 눈으로 확인해보고 싶을 수 있다. 그럴 때는 로컬환경에서 H2 Database를 이용해보면 쉽게 결과물을 볼 수 있다. 이전에 이미 컴파일하는 과정을 거쳤기 때문에 이제 실제로는 사용법을 익혀서 써보면 된다. H2 Database 설정하기 이전에 만든 "/src/main/resources/application.properties"에 진입한다. 위와 같이 "spring.h2.console.enabled=true"를 입력한다. "/src/main/java/Application" 클래스로 진입해서 main 메서드를 실행한다. H2 Database 실행하기 브라우저를 켜고 "http://localhost:8080/h2-consol..