java
POJO
POJO POJO Plain Old Java Object의 약자. 간단하고 오래된 자바 객체라는 뜻 자바의 언어 사양 외의 특정 자바 모델, 기능, 프레임워크에 종속되지 않은 자바 객체 미리 정의된 클래스의 확장 및 인터페이스를 구현하지 않음 미리 정의된 어노테이션을 포함하지 않아야 하나, 실제로는 기술적 어려움 때문에 사용 Getter, setter, 생성자만 있는 클래스라면 해당됨 만약 특정 OS등에 의존적인 클래스나 코드가 있으면 POJO가 아님 특정 기술에 종속적이게 되면 유지보수 및 확장에 문제가 생기므로, 객체지향의 장점을 살리기 어려움 Spring 프레임워크는 POJO 방식의 객체로 구성된 프레임워크 References https://ko.
read morejava
Split String Tokenizer 차이
Split String Tokenizer 차이 String Tokenizer 자바에서 하나의 문자열을 구분자(delimiter)를 통해 여러 개로 분리할 때 사용하는 클래스 구분자에 여러 문자를 사용하면 각 문자별로 구분이 됨 Ex) 구분자가 ",:" 라면 ","로 분리하고, ":"로 각각 분리함 빈 문자열을 인식하지 않음 nextToken 메소드를 통해 분리된 string을 하나씩 반환함 호환성을 위한 레거시 클래스로, 사용이 지양됨 Split 문자열을 구분자를 통해 여러 개로 분리하는 메소드. String 클래스에 들어있음 String 배열로 결과를 반환 정규 표현식 (RegEx)을 이용해서 문자열을 탐색 빈 문자열을 인식함 성능 차이에 대한 고찰 Split의 경우 정규 표현식을 사용하는 만큼 시간이 약간 오래 걸리지만, 구분자 길이에 영향을 받지 않음 String tokenizer는 구분자와 문자열을 일일이 비교함 따라서 시간 복잡도는 O(구분자의 갯수 * string의 길이) 구분자가 길어지는 만큼 시간이 오래 걸림 따라서 짧은 구분자라면 string tokenizer, 긴 구분자라면 Split이 빠름 단, string tokenizer는 레거시 코드 References https://dev-coco.
read morejava
Java Bean Spring Bean
Java Bean Spring Bean Java Bean 특정한 형태의 java class. 주로 JSP에서 데이터 전달/표현에 사용 Spring에서 DTO 혹은 VO가 Java bean의 일종 Private field와 인자가 없는 생성자, getter & setter를 가짐 클래스가 패키지화 되어야 함 Spring Bean Spring의 IOC 컨테이너에 등록되어 관리되는 자바 객체 개발자가 아닌 spring에 제어권을 넘김 Spring이 생성하고, 라이프 사이클을 관리하고, 의존성 주입이 일어남 다음과 같은 방법으로 spring bean을 등록 가능 xml에 등록 (오래된 방법, 지양됨) @Bean annotation을 이용해 bean 설정 파일에 등록 @Component annotation을 이용해 자동으로 등록 References https://dev-nomad.
read morejava
JUnit4 JUnit5
JUnit4 JUnit5 JUnit4에서 JUnit5으로 넘어오며 변경된 점 요약 자바 버전 5 → 8 이상 1개의 jar → Junit Platform, Junit Jupiter, Junit Vintage 세 개의 모듈로 구성 @Before, @After → @BeforeEach, @AfterEach @BeforeClass, @AfterClass → @BeforeAll, @AfterAll @RunWith(SpringRunner.class) → @ExtendWith(SpringExtension.class) @Category → @Tag @Rule, @ClassRule → @ExtendWith, @RegisterExtention Assertion의 위치가 org.junit.jupiter.api.Assertions로 변경 Spring boot 2.2 부터 기본으로 Junit 5 제공 References https://jade314.tistory.com/entry/Junit-5 https://hirlawldo.tistory.com/39 https://velog.io/@minky/Junit5-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
read morejava
Java Optional
Java Optional Java Optional NullPointerException을 피하기 위해 사용하는 클래스 Optional<T>로 사용하며, T 타입의 객체 혹은 null을 저장 가능. T 타입의 객체를 포장하므로 Wrapper class이기도 함 T 타입의 객체가 property로 들어가 있음. 이 객체가 null이더라도 클래스 자체는 null이 아닌 점을 활용함 클래스 내부에 EMPTY라는 빈 값을 나타내는 객체를 static으로 가지고 있으므로, 빈 값을 여러 곳에서 사용해도 메모리가 절약됨 NULL이 발생하지 않는 곳에서 Optional을 사용하면 오버헤드 발생 가능 코드 사용 예시 // 1.
read morejava
Java Final
Java Final Java Final 키워드 변수, 메소드, 클래스에 붙일 수 있는 키워드 변수에 붙이면 해당 변수는 수정 불가, 초기화 필수 다만 변수가 다른 객체를 참조하는 형태라면, 객체 자체는 변경하지 못해도 객체 내부의 property는 변경 가능 메소드에 붙이면 이 메소드의 오버라이딩이 불가능 클래스에 붙이면 다른 클래스에서 상속받을 수 없음 실행 시간이 아닌 컴파일 시에 어떤 메소드를 사용할 지, 어떤 값을 사용할 지 등이 결정되므로, 성능 향상에 도움 References https://sabarada.tistory.com/148
read morejava
Spring API Communication
Spring API Communication Spring API Communication Spring에서 비동기로 API를 활용해 통신하기 위해 다음과 같은 annotation 사용 @RequestBody 클라이언트에서 spring 서버에 데이터를 제공할 때 HTTP body에 넣어서 제공함 이 annotation을 통해 JSON 등의 데이터를 자바 객체로 변환해 줌 Annotation이 메소드의 parameter에 붙음 @ResponseBody 서버가 클라이언트에 응답할 때 별도의 설정이 없다면 view를 전달함 이 annotation을 통해 view가 아닌 문자열 / 자바 객체를 JSON 등의 데이터로 변환해서 전달 가능 클라이언트가 데이터를 받아서 직접 html을 그릴 때 사용하기 적합 ViewResolver 대신 HttpMessageConverter가 동작 Annotation이 메소드 위에 붙음 References https://velog.
read morejava
Kotlin Advantage
Kotlin Advantage Kotlin의 Java 대비 이점 불필요한 코드 (getter, setter)등을 묵시적으로 제공함으로 인해 코드량 감소 실행 시점에서 NULLPointException이 발생되지 않도록 컴파일 시점에서 막기 때문에 안전 NULL 관련 편리한 기능을 제공해 간결한 NULL 관련 코드 Java와 100% 호환되며 기존 Java 라이브러리도 활용 가능 클래스의 property를 생성자 없이 선언과 동시에 초기화 가능 문자열 처리가 더욱 용이 Argument의 기본 값 설정 가능 강제로 try-catch를 쓰게 만드는 문법 삭제 Smart casting을 통해 캐스팅 생략 가능 Coroutine을 통한 비동기 처리 지원 References https://juhi.
read morejava
Tomcat
Tomcat Tomcat Apache 재단에서 만든, 서블릿 컨테이너 및 HTTP 처리 엔진만 있는 WAS 자바 서블릿을 이용해 요청을 자바로 처리하고 응답 Apache 2.0 License를 채용한 오픈 소스 SW Tomcat 5.5 버전부터는 Apache의 정적 컨텐츠를 처리하는 web server 기능이 추가됨. 이후로 Apache Tomcat이라고 불림 References https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%86%B0%EC%BA%A3 https://melonicedlatte.com/2020/07/08/231200.html https://namu.wiki/w/Tomcat https://devmoony.tistory.com/113
read morejava
Java Exception
Java Exception Java Exception 시스템에 생긴 비정상적인 상황을 오류라고 함. 프로그램이 복구할 수 없음 반면 문제가 발생한 경우 일정한 방법을 통해 처리하는 방법을 예외라고 함 오류와 달리 예외는 개발자가 다룰 수 있음 throw라는 키워드를 통해 직접 예외를 발생시킬 수 있음. 이를 예외를 던진다고 표현 자바에서 예외는 Exception이라는 클래스를 상속받음. Exception은 runtime exception이라는 하위 클래스를 가짐 Checked / Unchecked 예외는 checked exception과 unchecked exception으로 구분됨
구분 Checked Unchecked 예외 처리 명시적인 처리 필수 명시적인 처리 필수 아님 예외 확인 가능 시점 컴파일 시 실행 시 발생 시 트랜잭션 트랜잭션을 roll-back 하지 않음 트랜잭션을 roll-back 예시 IO, SQL 관련 예외 Null pointer, Index out of bound Runtime exception 클래스 상속 받지 않음 상속 받음 예외 처리 방법 예외 발생 시 처리에 다음과 같은 세 가지 방법 존재
read more