Backend 25

Java 8에 추가된 것들 1

내가 쓰는 언어의 버전에서 어떤걸 사용할 수 있는지 알아보고자 정리하였다. 먼저 자바 8에서 추가된 주요 기능들을 나열하면 아래와 같다. 1. Optional 2. 인터페이스의 기본 메소드(Default method) 3. 날짜와 시간 관련 클래스들 추가 4. 병렬 배열 정렬 5. StringJoiner 추가 6. 람다(Lambda) 표현식 7. 함수형 인터페이스(Functional Interface) 8. 스트림(Stream) Optional(옵셔널) 선택적으로 뭔가를 처리 할 때 사용하는 것으로 객체를 편리하게 처리하기 위해서 만든 클래스다. Optional클래스는 null 처리를 보다 편리하게 하기 위해서 만들어졌다. NullPointerException이 발생할 수 있는 상황에서 문제를 보다 간편..

Backend/JAVA 2021.09.09

Spring Bean 설정 방법

1. XML 설정 사용 XML을 사용하면 컴파일 없이 빈 설정 정보를 변경할 수 있다. 빈 설정에 에러가 났을 경우 컴파일러가 이를 잡아주지 못하고 문제가 생겼을 경우에 원인을 찾는게 어렵다. 최근에는 스프링 부트를 많이 사용하면서 XML기반의 설정은 잘 사용하지 않는다. XML 설정 방법 resources폴더 아래에 xml파일을 생성하여 설정한다. [appConfig.xml] id : 등록할 빈의 이름 class : 패키지명을 포함한 빈으로 정의할 클래스 scope : 빈의 스코프(singleton, prototype, reqeust...), 설정하지 않으면 기본적으로singleton이 적용된다. autowired : 기본적으로 타입과 이름, 생성자등이 있다.(autowired방법) constructo..

Backend/Spring 2021.08.29

스프링 빈(Bean)

빈이란? 자바 객체를 말하며 스프링에서는 IOC컨테이너를 제공하는데 이 컨테이너가 관리하는 객체를 빈(bean)이라고 합니다. 빈은 IOC컨테이너에 의해서 인스턴스화 되고 조립 및 관리되는 객체입니다. IOC Container, DI Container 어떤 객체가 사용하는 의존 객체를 직접 생성해서 사용하는 것이 아니라 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 말하며 이러한 개념을 토대로 만들어진 것을 IOC Container 또는 DI Container라고 합니다. 스프링에서는 BeanFactory, ApplicationContext가 IOC로 만들어진 인터페이스이며 ApplicaitonContext를 Spring Container라고 합니다. BeanFactory 스프링 컨테이너의 최상..

Backend/Spring 2021.08.20

빈 스코프(Bean Scope)

빈 스코프(Bean scope) 빈이 존재 할 수 있는 범위를 뜻하며 스프링은 빈 등록시 기본적으로 싱글톤 스코프를 사용하고 있습니다. @Scope를 통해 스코프를 지정해 줄 수 있습니다. 싱글톤(Singleton) 스프링의 기본 스코프로, 스프링 컨테이너의 시작과 종료까지 유지되는 가낭 넓은 범위의 스코프 범위. 싱글톤 스코프로 빈을 등록하면 맨 처음 객체가 한번 생성됩니다. 빈 요청을 할 때 항상 동일한 인스턴스를 반환하여 사용 할 수 있습니다. 스프링에서@Component로 클래스 파일을 생성하면 싱글톤 스코프로 등록이 됩니다. @Test void singletonBeanTest(){ AnnotationConfigApplicationContext context = new AnnotationConfi..

Backend/Spring 2021.08.20

객체지향 5원칙 (SOLID)

객체지향 5원칙 개발을 진행하면서 좋은 소프트웨어를 만들기 위해 지켜야할 5가지 원칙을 말하며 각 원칙의 앞 글자를 축약하여 SOLID라고 말한다. 5가지 원칙은 아래와 같다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open/Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존관계 역전 원칙 1. SRP(Single Responsibility Principle) : 단일 책임 원칙 모든 클래스는 각각 하나의..

Backend/JAVA 2021.07.28

객체지향 프로그래밍(OOP)

객체지향 프로그래밍이란? 객체지향 프로그래밍(OOP : Object Oriented Programming)은 프로그래밍에서 필요한 데이터를 추상화 시켜 역할과 책임을 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 기법이다. 객체지향의 사실과 오해라는 책에서는 객체지향에 대해 아래와같이 설명한다. 객체 지향 설계를 객체들간의 역할, 책임, 협력으로 이루어 진다 하나의 객체가 한가지 역할을 수행하고 그 역할을 수행 할 책임이 있으며 메시지를 통해 다른 객체와 협력하여 기능을 구현한다. 객체 지향 설계는 현실을 모방하는 것이 아니다. 현실을 닮아야 한다는 어떤 제약이나 구속도 없다. 창조한 객체의 특성을 상기시킬 수 있다면 현실 속의 객체의 이름을 이용해 객체를 묘사하..

Backend/JAVA 2021.07.27

JAVA JWT payload 가져오는 방법 / 만료시간 체크

java에서 jwt payload를 가져오는 방법에대해 정리하보고자 한다. JWT 개념 JWT(Json Web Token)란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token 이다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식 으로 정보를 안전하게 전달한다. 주로 회원 인증이나 정보 전달에 사용된다 intelliJ maven java 8 지금까지 JWT안에 payload를 가져올려면 public key나 private key가 있어야하는줄 알았는데 아래 사이트에서 바로 내용을 확인 할 수 있는것을 보고 key가 필요없다는걸 알게 되었다.... JWT.IO JSON Web Tokens are an open, industry standard ..

Backend/JAVA 2021.06.09

중심 좌표로 부터 거리 구하기 / 가까운 거리 순으로 정렬

지도에 마커를 표시할 때 현재 위치로부터의 거리나 가장 가까운 데이터 10개만 표시하고자 할 경우를 알아보았다. SELECT (6371 * acos(cos(CAST(TARGET_LAT AS FLOAT) * 3.141592653589793 / 180.0) * cos(CENTER_LAT * 3.141592653589793 / 180.0) * cos((CENTER_LON * 3.141592653589793 / 180.0) - (CAST(TARGET_LON AS FLOAT) * 3.141592653589793 / 180.0)) + sin(CAST(TARGET_LAT AS FLOAT) * 3.141592653589793 / 180.0) * sin(CENTER_LAT * 3.141592653589793 / 180...

[Spring security password Encoding] Spring boot 패스워드 간단 암호화

spring boot에서 패스워드 암호화를 하기 위해 spring security를 사용해봤다. 먼저 가장 기본인 pom.xml에 dependency를 추가해준다 org.springframework.security spring-security-core 5.2.1.RELEASE 그냥 패스워드 암호화만 사용하고자 하면 이것만 추가하면된다 bean으로 등록해서 사용하기 위해 따로 클래스를 만들었다. package com.myProject.test.security.password; import java.util.Base64; import java.util.HashMap; import java.util.Map; import org.springframework.security.crypto.bcrypt.BCryptP..

Backend/Spring 2021.05.23

[Tibero/Geometry 에러 처리] Data is too long for the column 에러/ tbClob/tbBlob 처리 방법(feat. GIS)

GIS 데이터를 처리하다 보면 polygon 데이터가 기하학적으로 늘어나는 경우가 있다 ​ tibero에 있는 내장함수 TO_CHAR로 String 형태로 가져오면 60000byte?까지밖에 가지고 못한다. ​ 나 같은 경우에는 아래와 같은 sql 문으로 geometry 정보를 가져오는 부분에서 에러가 나왔다. SELECT ID,TO_CHAR(ST_ASTEXT(GEOM)) FROM GEOMETRYTABLE 여기서 ST_ASTEXT는 geometry 정보를 tbClob으로 가져오는 함수이다. 자바에서 ST_ASTEXT로만 가져오면 com.tmax.tibero.jdbc.TbClob 형태로 가져오게 된다. ​ 그걸 TO_CHAR로 감싸게 되면 WKT 형태로 geometry 값을 받아올 수 있다. ​ clob과..

Backend/JAVA 2021.05.13