기존의 문자열 비교 기존에 문자열 비교를 할 때는 당연히 String 클래스의 equals() 메소드를 사용하라고 암기적으로 외워왔을 것입니다. 예를 들어, "String 문자열의 경우 ==(참조값 비교) 가 아닌 equals() 메소드로 값 비교를 한다." 라는 식으로 말이죠. 이 문장은 자바 1.7까지는 유효했을 것입니다. String의 문자열이 일치하는지는 당연히 equals() 메소드로 확인이 가능했으니까요. String 클래스의 equals() 메소드를 보겠습니다. String equals() 메소드 public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String..
프로젝트 구조 설명 - controller, model, service, repository로 패키지 구조화 - model 패키지의 경우 DTO, VO 같은 데이터 클래스가 정의되어있는 패키지 인데, 이것을 * 컨트롤러에서 파라미터로 받는 Param, * DB에서 select문의 결과로 반환될 Entity, * ResponseEntity Json형태로 반환될 Result 객체로 구분 - service 클래스는 인터페이스를 클래스가 구현하는 형태가 아닌 직접 클래스가 역할을 하는 쪽으로 함. -> 인터페이스를 이용하여 다형성을 구현하는 형태가 아니라 일종의 루틴처럼 사용되는 경향이 있어보여서 과감히 탈피. - 이전 챕터에서 진행했던 home 클래스는 삭제해도 됨. - API 테스트를 진행할 BoardCon..
안녕하세요. 스프링 부트를 이용한 REST API 게시판 서버 만들기 예제를 진행해보려고 합니다. 초급수준으로 진행하며 JUnit을 이용하여 테스트 코드를 작성할 것이고, Jacoco 코드 커버리지도이용해보고자 합니다. 코드 커버리지란 테스트 코드를 수행할 때 테스트하지 않은 부분을 퍼센트(%)로 측정할 수 있게 하는 부분입니다. pom.xml에 설정을 통해서 서버를 실행할 때 특정 퍼센트를 넘지 않으면 빌드할 수 없도록 설계도 가능합니다. 모든 소스는 이곳에서 확인하실 수 있습니다. 간단한 예제로 먼저 소개해보겠습니다. 프로젝트 스펙 - 스프링 부트 2.2.2 버전 - 자바 1.8 - 롬복 - JPA - H2 - spring-restdoc - JUnit(4.12) - jacoco(0.8.5) - spr..
맥을 사용하다보면 이러한 아이콘을 많이 보셨을 것입니다. 이는 윈도우의 cmd(명령 프롬프트창)와 같은 역할을 하는 리눅스 기반의 터미널입니다. 저는 회사에서 개발을 할때, AWS RDS에 접근하기 위해서 시큐어쉘 명령어를 이용한 아주 복잡한(실제 주소공개는 하지 않기위해서) 명령어를 매번 복사해서 붙고 password를 입력하고 난 후에야 RDS에 접근할 수 있었습니다. 예를 들어, "myaccount@포트주소 -p 22 -N -L 5432:rds주소:포트" 이러한 명령어를 매번 메모장이나 중요 보관함에 보관해놨다가 복사해서 터미널에 붙여넣곤 했었습니다. 다 외울 순 없으니까요!!! 그런데 한가지 쉽게 해결할 방볍을 알게되었습니다. 바로 alias를 이용한 것인데요. 터미널 창을 켜보겠습니다. 예를 들..
자바에서 커스텀 어노테이션을 만드는 방법은 다음과 같다. public @interface MyAnnotation { } 사실상 인터페이스 키워드에 @를 붙이면 되는 것인데. 이것을 곧바로 클래스, 필드, 메서드 같은 곳에 붙이면 어노테이션으로써의 껍데기 역할은 할 수 있게 된다. - @MyAnnotation 사용 예) @MyAnnotation public class MyMain{ public static void main(String[] args){ System.out.println("Hello World!"); } } @Retention 어노테이션 - Book 클래스 package org.example; @MyAnnotation public class Book { private static String..
리플렉션은 Class 타입으로 시작합니다. 도큐먼트 : https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html Class (Java Platform SE 8 ) Determines if the specified Class object represents a primitive type. There are nine predefined Class objects to represent the eight primitive types and void. These are created by the Java Virtual Machine, and have the same names as the primitive types tha docs.oracle.com 위의 ..
DZone이라는 사이트에서 번역해서 가져온 글입니다. 간단히 읽어보시고 원문을 읽어보고싶으시면 아래 url로 들어가셔서 바로 보시면 될것 같습니다. 참고문 정도로 보시면 좋겠습니다. 원문 : https://dzone.com/articles/spring-vs-spring-boot 시작!! 스프링과 스프링 부트를 모두 배워보고 싶으신가요? 이 곳에서 그 차이를 확인하시고 어떻게 각각 다른 방법으로 문제를 해결했는지 확인해보실 수 있습니다. 서론 - 스프링이 무엇일까요? - 스프링 부트는요? - 그들의 목적은 뭘까요? - 우리가 어떻게 비교할 수 있을까요? 질문자의 머리속에는 굉장히 많은 질문들이 떠오르고 있을것입니다. 이 포스팅을 보시고 이 질문들에 대한 답을 어느정도 내실 수 있으리라 생각해요. 또한 스프..
필자는 인텔리제이라는 IDE를 사용합니다. 대략 2-3개월정도 되었는데요. 이클립스로 개발할 때는 주로 스프링 레거시 프로젝트로 프로그래밍을 하곤 하였는데, 인텔리제이로 갈아타면서 스프링부트를 접하게 되었습니다. 프로젝트를 생성하고 나니 resources 폴더 밑에 application.properties 파일이 자동적으로 생성이 되어 있더라구요. 이 파일은 스프링부트에서 Configuration을 잡을 때 대체할 문자/숫자 데이터를 적어 두고 추후에 활용하는 파일입니다. 예를 들어, 디비정보, 앱 버전정보, 에러설정정보, 포트정보 등입니다. 뭐 이러한 것들은 실제 Config 자바 파일에서도 설정이 가능한 부분이 존재합니다. 일부는 스프링부트에서 글로벌 변수처럼 등록해서 활용하는 것들도 있구요(ex/ ..