목록분류 전체보기 (150)
forDevLife
Application run 시점에 미리 csv 파일을 db에 업로드 하고 싶어서 다음과 같은 방법을 사용했다. @Override public void run(String... args) throws Exception { ClassPathResource classPathResource = new ClassPathResource("파일.csv"); // 파일 업로드 로직 수행 // File file = classPathResource.getFile(); FileItem fileItem = new DiskFileItem("file", Files.probeContentType(file.toPath()), false, file.getName(), (int) file.len..
AOP 용어 아래 용어들은 Spring에서만 사용되는 용어들이 아닌 AOP 프레임워크 전체에서 사용되는 공용어입니다. 타겟 (Target) 부가기능을 부여할 대상을 얘기합니다. 여기선 핵심기능을 담당하는 getBoards 혹은 getUsers를 하는 Service 들을 얘기합니다. 애스펙트 (Aspect) 객체지향 모듈을 오프젝트라 부르는것과 비슷하게 부가기능 모듈을 애스펙트라고 부르며, 핵심기능에 부가되어 의미를 갖는 특별한 모듈이라 생각하시면 됩니다. 애스펙트는 부가될 기능을 정의한 어드바이스와 어드바이스를 어디에 적용할지를 결정하는 포인트컷을 함께 갖고 있습니다. 참고로 AOP(Aspect Oriented Programming)라는 뜻 자체가 어플리케이션의 핵심적인 기능에서 부가적인 기능을 분리해서..
Google을 이용한 OAuth 로그인 후, 여러 권한 변경 테스트를 하다가 로그아웃이 제대로 안되어 정상으로 동작하는지 알 수 없었다. 쿠키를 매번 삭제하기도 버거워 방법을 알아보던 중 매우 간단한 방법을 찾았다. GOOGLE은 기본 CommonOAuth2Provider로 지정되어 있다. 따라서 authorizationUri도 정의되어있는데, 이를 yml에서 임의로 변경해주면 된다. application.yml 또는 properties에서 authorization-uri(처음 로그인 요청 경로)의 기본 값을 변경해준다. 맨 뒤에 prompt-consent 쿼리를 추가하면 로그아웃 시 완벽하게 로그아웃 됨을 확인할 수 있다. 참고 : https://developers.google.com/identity/..
생활코딩 OAuth 2.0 정리 1. OAuth 2.0 accessToken을 통해 SERVICE(google, facebook 등)에 접근할 수 있는 핵심이다. mine : 우리가 만든 서비스 (Client) their : 로그인 기능을 지원해주는 대형 service(우리가 제어하고자 하는 자원 - user의 자원을 가진 서버 = 리소스 서버) user : their이라는 service에 가입이 되어있는 회원이며, 우리가 만든 서비스에 접근하고자 함 (= 리소스 owner) + Authorization server : 인증을 처리하는 서버, 리소스 서버와 합쳐 설명된다. 2. OAuth 2.0 등록 Client는 리소스 서버의 승인을 사전에 받아둬야 한다. 이를 register라고 하며, 이를 살펴본다..
Spring Boot Security - 스프링 부트는 인증과 권한에 관련된 강력한 기능인 '스프링 부트 시큐리티'를 제공한다. 이는 '스프링 시큐리티'의 번거로운 설정을 간소화시켜주는 래핑 프레임워크이다. (스프링 부트 시큐리티 = 스프링 시큐리티 + 스타터) - 기본적인 틀 안에서 원하는 대로 인증, 권한 처리를 편하게 할 수 있다. 따라서 로직 구현에 집중할 수 있다. - 일반적인 인증은 사용자명 / 비밀번호로 인증된다. - 회원 가입 과정을 생략한 소셜 로그인 방식의 OAuth2도 활용할 수 있다. 이 방식으로 사용자 인증 후 각 사용자에게 허용되는 권한을 부여해볼 것이다. - 스프링 부트 1.5 버전 기준으로 먼저 알아본 후, 2.0 버전으로 업그레이드를 해보자. 1. 배경 지식 - 스프링 부트..
Springboot 2 기초 @ConfigurationProperties 어노테이션 사용중 갑작스러운 빨간알림 발생 -> dependencies { annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" } 해결 - LOMBOK cannot find symbol 에러 - POJO(Plain Old Java Object) : Java EE 같은 특정 프레임워크에 종속적이지 않은 자바 객체 - @ConfigurationProperties : application.yml에서 테스트 프로퍼티 추가 후 prefix를 통해 지정된 클래스에서 프로퍼티를 매핑할 수 있게 한다. - Spring Boot auto-configur..
알고리즘 - 조합 for (int i = 0; i < N - 1; i++) { for (int j = i + 1; j < N; j++) { combX.add(i); combY.add(j); } } for (int i = 0; i < combX.size(); i++) { System.out.print(combX.get(i) + ", " + combY.get(i)); System.out.println(); } ArrayList(combX, combY)를 선언 후 위와 같이 조합을 생성할 수 있다. N이 5일 경우, X는 0~3까지 & Y는 X+1부터 4까지 조합된다.
Java - 기본 - 자바 응용프로그램은 OS, H/W가 아닌 JVM하고만 통신하고, JVM이 자바 응용 프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환해서 전달한다. - 따라서 자바로 작성된 프로그램은 운영체제 독립적이다. - 하지만 JVM은 운영체제에 종속이다. 따라서 Oracle에서는 여러 운영체제에 설치할 수 있는 다른 버전의 JVM을 제공한다. - 동적 로딩(Dynamic Loading) 지원한다. -> 자바 애플리케이션은 여러 클래스로 구성되어 있다. 동적 로딩으로 인해 실행 시에 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 그 외에도 일부 클래스 변경되어도 전체 애플리케이션을 다시 컴파일 할 필요 없다. -> 따라서 유..
1. 원인 EC2의 yum에 (내 local 버전이라고 생각했던) java 15를 지원하지 않아, curl -O를 통해 java archive 서버로부터 직접 java 15를 다운 받고, PATH & JAVA_HOME으로 해당 경로를 등록해두었다. 여태 PC의 default 버전이 15라고 생각되어 EC2도 15로 받았는데, intelliJ에서 JDK11을 사용하고 있더라?? 그런데 터미널에 java-version 확인하면 15로 되어 있어 여태까지 헷갈렸던 것.. 멍청하군 2. 해결 로컬과 EC2 모두 11로 변경하기로 했다. - 우선 로컬부터 다시 11로 로컬의./zshrc에 등록했다. 계속 Java 경로에 접근할 수 없다 에러가 났는데, 경로 앞에 { } 를 넣어서 생기는 오류였다. $JAVA_HO..
gitignore이 제대로 적용되지 않아 원하지 않은 파일이 올라가서, 푸쉬 이전으로 돌아갈 방법을 찾아봤다. 로컬에서 커밋 되돌린 후 강제 푸시하는 방법 로컬 저장소에서 일단 커밋을 되돌린 후, 이를 원격 저장소에 강제로 반영시키는 방법이다. 방법 1. 먼저 로컬에서 $ git reset 명령어를 이용해 내가 되돌리고 싶은 커밋들을 되돌린다. >> $ git reset --soft [hashcode] - hard : 돌아가려는 이력 이후의 모든 내용 삭제 - soft : 돌아가려 했던 이력으로 되돌아 갔지만, 이후의 내용이 지워지지 않고, 해당 내용의 인덱스(또는 스테이지)도 그대로 있습니다. 바로 다시 커밋할 수 있는 상태로 남아있는 것입니다. git log를 통해 돌아가길 원하는 커밋의 코드를 찾아..