Backend 45

JAVA 오버로딩, 오버라이딩을 통해 다형성 구현하기

다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것이다. 자바에서는 다형성을 위해 부모클래스 타입의 참조변수로 자식클래스 타입의 인스턴스를 참조할 수 있도록 한다. 오버로딩과 오버라이딩을 통해 다형성을 구현할 수 있다. 오버로딩과 오버라이딩의 비교 오버로딩과 오버라이딩은 그 단어의 유사함으로 인해 혼동하기 쉽다. 하지만 그 개념은 확실히 다르며, 그 차이점을 아는 것이 중요하다. 오버로딩(overloading)은 새로운 메서드를 정의하는 것이고, 오버라이딩(overriding)은 상속받은 기존의 메서드를 재정의하는 것이다. 오버로딩 오버라이딩 메서드명 동일 동일 매개변수 및 타입 다름 동일 리턴 타입 관계 없음 동일 다형성을 구현하는 방법 오버로딩 : 메서드명이 같지만 ..

Backend/Java 2024.03.20

자바 컬렉션 프레임워크(Java Collection Framework) 정리

자바 컬렉션 프레임워크(Java Collection Framework)배열을 보완하는 컬렉션(Collection)컬렉션(Collection)은 여러 요소들을 담을 수 있는 자료구조이다. 즉, 다수의 데이터 그룹이며 컨테이너(Container)라고도 부른다. 컬렉션은 배열과 비슷하지만, 크기가 고정된 배열을 보완하여 Re-sizable한 특성을 가진다. 자바 초창기에는 Vector, Stack, HashTable 등의 컬렉션 클래스만 제공했으나 자바 1.2 이후 표준적인 방식으로 컬렉션을 다루기 위한 컬렉션 프레임워크(Collection Framework)가 등장하였다. 모든 컬렉션 클래스명은 구현한 인터페이스명이 포함되어 있어서 바로 클래스의 특징을 바로 알기 쉽다. (예를 들어 HashMap 클래스는 ..

Backend/Java 2023.12.18

Spring Security 3 버전에서 h2.console.enabled : true일 때 servlet 오류 해결 방법

Spring security 3점대 버전에서 spring.h2.console.enabled=true 로 옵션을 주니 아래 오류가 발생했다. 문제 발생 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'filterChain' de..

스프링부트 개발환경 구성하기 (9) 게시물 조회/등록/수정/삭제

포스팅 순서는 아래와 같다. OpenJDK 17 설치 STS 4 설치 스프링부트 프로젝트 생성 메이븐 Local Repository 설정 DB 설계와 REST API 설계 mybatis 연동과 게시판 목록 조회 페이징 (Mybatis에서 Pageable) 동적 정렬처리 게시물 조회/등록/수정/삭제 (현재 포스팅) REST API 설계 내용을 기반으로 게시물 조회, 등록, 수정, 삭제 기능을 구현했다. 사실 크게 어려운 게 없기 때문에 소스 만으로 충분히 설명이 될 것 같다. BoardController.java package com.company.helloBoard.domain.board.controller; import org.springframework.beans.factory.annotation.A..

자바에서 줄바꿈 \n 개행문자 치환하는 예제

개행문자(newLine) 개행문자는 컴퓨터에서 줄바꿈을 나타내는 제어 문자를 말하며, 줄바꿈문자라고도 부른다. 개행문자에는 크게 두가지 종류가 있다. LF (new Line Feed) 라인피드, 뉴라인으로 부르며, 커서를 한 칸 아래로 이동해 새로운 라인을 추가한다. \n 아스키코드 : 10 CR (Carriage Return) 캐리지리턴, 리턴으로 부르며, 커서를 맨 왼쪽으로 이동(시작 위치로 복귀)한다. 엔터키와 동일하다. \r 아스키코드 : 13 개행문자는 운영체제마다 다름 윈도우 : CRLF (\r\n) 맥 : CR (\r) 유닉스 : LF (\n) 자바 개행문자 사용하기 자바에서 개행을 처리할 때 \r\n 으로 처리하는 것이 가장 간단한 방법이긴 하지만, 개행문자는 운영체제별로 다르게 처리될 수..

스프링부트 Scheduler 정해진 시간마다 동작 시키는법

이번 프로젝트에서 정해진 시간마다 특정 동작을 수행해야 하는 기능이 있었다. Spring Boot에서 제공하는 Scheduler 기능을 이용해서 매우 간단하게 구현할 수 있다. 이번 포스팅에서는 특정 시간에 스케줄러를 통해 특정 동작을 구현하는 다양한 예제를 살펴볼 것이다. (쪼금 스압 주의)1. 스케줄러 활성화Scheduler는 기본적으로 Spring Boot에 포함되어 있어서 의존성을 별도로 추가할 필요는 없다. 메인 Application 클래스에 @EnableScheduling를 추가하여 Scheduler를 활성화한다.@SpringBootApplication @EnableScheduling // 스케줄러 활성화 public class SchedulerApplication { public static..

Spring Boot 내장 톰캣 제외시키는 방법

Spring Boot로 개발된 애플리케이션을 실행할 때, 내장 톰캣이 아니라 다른 서버로 배포해야 하는 경우가 있다. (예를 들어 내장톰캣이 아니라 Weblogic 서버로 배포해야 할 경우) 이런 경우 내장톰캣 관련된 설정을 모두 제거해야 한다. Spring Boot 애플리케이션에서 내장 톰캣서버를 제외시키는 방법은 간단하다. 내장톰캣 제외하기 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat pom.xml에서 으로 내장 톰캣을 제외하면 된다. 그런데 간혹 내장톰캣 제외 설정을 해도 안지워지는 경우가 있다. maven repository에서 내장톰캣을 사용하는 라이브러리들을 ..

Spring Boot에서 static 변수로 선언한 @Value 값이 NULL일 경우

Spring Boot에서는 초기화 과정에서 컴포넌트를 주입할 때, 애플리케이션에 대한 Key/Value 형태의 설정을 클래스 내 변수에 값을 넣어주는 @Value 어노테이션이 존재한다. 이러한 설정은 application.properties 설정 파일에서 다음과 같은 형식으로 관리할 수 있다.encrypt.key=1.0.2이러한 방식을 사용하여 다른 3rd party 서비스를 사용할 때 Access Key 또는 Secret Key 같은 설정을 유용하게 할 수 있다.static 변수에 대하여 @Value 사용하기@Component로 선언된 클래스에서 @Value으로 변수를 설정하여 설정파일에 선언한 값을 가져올 수 있다. 다만 static 변수에서 다음과 같이 @Value 을 사용한다면 잘못된 결과를 초래..

스프링부트 EnvironmentPostProcessor로 사용자 정의

이번 프로젝트에서 Spring Boot 애플리케이션 구동시 실행되는 기능을 만들어야 했다. EnvironmentPostProcessor 인터페이스를 활용하여 커스터마이징 환경으로 구현할 수 있었다. 이 인터페이스는 Environment 애플리케이션 컨텍스트가 올라가기 전에 애플리케이션을 사용자 정의할 수 있게 해주는 기능이다. 실제 예시를 살펴보자.사용자 정의 클래스 생성EnvironmentPostProcessor 인터페이스를 구현한 사용자 정의 클래스를 작성한다.import org.apache.commons.logging.Log; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.Environmen..

STS 4에서 war 파일로 쉽게 배포하는 방법 (배포 및 실행까지)

STS 4에서 Spring boot와 Maven으로 개발한 애플리케이션을 war 파일로 배포하려고 한다. 이클립스에서는 간단히 war 파일을 만들 수 있지만, STS 4에서는 Export - war file 탭 항목이 아예 뜨질 않는다. Stackoverflow에서는 플러그인(Eclipse Enterprise Java and Web Developer Tools)을 설치하면 된다고 하지만, 굳이 플러그인을 설치하지 않아도 Maven을 통해 war 파일을 생성할 수 있다.Maven으로 war 파일 생성하기STS에서 war 파일로 만드는 방법은 생각보다 간단하다. 아래 2개만 하면 된다.프로젝트 폴더 우클릭 > Run As > Maven clean프로젝트 폴더 우클릭 > Run As > Maven instal..