분류 전체보기 77

null을 반환하는 메서드는 자제하자.

// 컬렉션이 비었으면 null을 반환한다. - 하지말자 private final List cheesesInStock = ...; /** * @return 매장 안의 모든 치즈목록을 반환한다. 단 재고가 하나도 없으면 null을 반환한다. **/ public List getCheeses() { return cheesesInStock.isEmpty() ? null : new ArrayList(chessesInStock); } 이 코드처럼 null을 반환한다면, 클라이언트는 이 null 상황을 처리하는 코드를 추가로 작성해야 한다. List cheeses = shop.getCheeses(); if (chesses != null && chesses.contains(Cheese.STILTON)) { System..

Java 2020.11.16

Spring Cloud Gateway - API Gateway 맛보기

1. 앞서 알고가기 Spring Cloud Gateway 로 API Gateway 구축에 앞서 필요한 개념을 먼저 간단하게 정리해봤다. 1-1. API Gateway 란? 인증 / 모니터링 / 오케스트레이션 등과 같은 기능을 포함한 향상된 Reverse Proxy다. Netflix zuul, Amazon API Gateway, Spring Cloud Gateway 같은 것들이 잘 알려진 Api Gateway 구현체들이다. 1-2. Spring Cloud Gateway (이하 SCG) 란? Spring Reactvie 생태계에 구현된 API Gateway이다. Gateway Handler Mapping으로 들어오는 요청들을 적절한 대상으로 라우팅하는 간단하고 효과적인 방법을 제공한다. 그리고 Spring ..

Spring 2020.10.19

Window 10 Redis 설치하기

microsoftarchive에서 window용 redis를 작업해놨는데 수 년전에 deprecated 상태로 변경됨. 커뮤니티를 확인해보니 github.com/tporadowski/redis 에서 꾸준히 관리중이니 이 버전을 활용해보기로 한다. redis는 window 환경에선 개발/테스트용으로만 사용하자 설치 1. https://github.com/tporadowski/redis/releases에서 설치형 버전과 portable 버전을 지원한다. 본인은 portable 버전으로 진행 2. 적당한 곳에 압축을 풀고 redis-server.exe를 실행한다. 테스트 1. 다른 프롬프트를 열고 redis-cli.exe를 실행한다. 해당 프로그램으로 redis client를 이용할 수 있다. 이후의 사용법이..

Infrastructure 2020.10.14

Spring Security OAuth2 - Authorization endpoint

AuthorizationServerEndpointsConfigurer에서 PathMapping 메소드를 제공한다. 이 메서드는 두 개의 변수를 받는다. 기본 경로 (프레임워크가 제공) 커스텀 경로 ("/"로 시작) public AuthorizationServerEndpointsConfigurer pathMapping(String defaultPath, String customPath) { this.patternMap.put(defaultPath, customPath); return this; } 프레임워크가 제공하는 경로는 다음과 같다 Authorization Endpoint: /oauth/authorize Token Endpoint: /oauth/token Approval Endpoint: /oauth..

Spring 2020.10.07

윈도우10 스카이프(Skype) 삭제하기

별도로 설치한 스카이프는 프로그램 추가/삭제에서 삭제할 수 있지만 윈도우10 기본앱인 스카이프는 해당 방법으로는 삭제할 수 없습니다. 1. 작업표시줄 좌측 하단의 [시작버튼(윈도우로고)]를 누릅니다. 2. Windows PowerShell을 입력하여 검색한 후 우클릭하여 [관리자권한으로 실행]으로 실행합니다. 3. Windows PowerShell이 실행됩니다. 4. 창에 아래의 명령어를 입력하고 엔터를 누릅니다. 복사가 되지 않을 경우 다음 파일을 받아서 복사-붙여넣기 해주세요. Get-AppxPackage *skypeapp* | Remove-AppxPackage 5. 초기화됨 메세지가 출력되면 완료된겁니다.

IT Tip 2020.09.25

Spring Jpa - Query DSL + Gradle 6 설정

최근 Spring boot + jpa 로 프로젝트 진행하다 jpa 인터페이스 네이밍 방식의 단점을 느끼고 Query DSL을 도입하면서 정리한 글 기본 제공 @Query와 인터페이스 메서드 네이밍 방식은 한계가 있고 가독성도 안좋음 // 쿼리가 길어질수록 더러워짐 @Query(value="UPDATE Work W SET W.workGroup = :workGroup WHERE W.workSeq = :workSeq", nativeQuery = false) // 네이밍이 길어질수록 더러워짐 Page findByWorkGroup_WorkGroupNmContainingAndWorkNmContaining(String workGroupNm, String workNm, Pageable pageable); 1. Grad..

Spring 2020.09.21

Spring Jpa - Paging api 처리하기

JPA를 이용해서 Paging API를 처리해보자. JpaRepository는 PagingAndSortingRepository를 상속받고 있으므로 CurdRepository보다 하위 클래스인 JpaRepository를 상속받아 구현하자. public interface WorkGroupRepository extends JpaRepository { Page findByWorkGroupNmContaining(String workGroupNm, Pageable pageable); } 예제 @RestController @RequestMapping("/workgroup") @RequiredArgsConstructor public class WorkGroupController { @GetMapping public P..

Spring 2020.09.18

Amazon AWS Cloud Computing

클라우드 컴퓨팅 서비스 이용방식 IaaS(Infrastructure as a service) : 물리적 서버, 네트워크, 스토리지를 가상화하여 다수의 고객을 대상으로 유연하게 제공하는 인프라 서비스 PaaS(Platform as a service) : Web 기반의 서비스 또는 애플리케이션 등의 개발 및 실행을 위한 표준 플랫폼 환경을 서비스 형태로 제공하는 서비스 SaaS(Software as a service) : Microsoft Office 365, Googld Gsuite와 같이 응용프로그램을 인터넷 및 웹 브라우저를 통해 제공하는 서비스 AWS 주요 서비스 설명 리전(Region) : AWS 서비스가 위치한 물리적 장소, 네트워크 속도와 재해에 대비하기 위해 여러곳 존재 가용영역(AZ, Ava..

Infrastructure 2020.08.03

Spring Data Jpa Auditing

Spring Data Jpa Auditing Audit: 회계 감사, 감사하다 테이블 설계시 항상 공통적으로 들어가는 생성일자, 수정일자 등의 컬럼에 대해 자동으로 값을 넣어주는 기능을 Spring-Data-Jpa에서 제공한다. @EnableJpaAuditing 활성화 @EnableJpaAuditing @Configuration public class DatabaseConfig { @Bean public DataSource dataSource() { ... @EnableJpaAuditing 어노테이션을 활성화 시켜줘야 한다. 위치는 Config 클래스나 Application.class와 같은 root 클래스에 추가한다. Entity 설정 @Entity @Table(name = "BOARD") @IdCla..

Spring 2020.07.29

ApplicationContext와 Singleton

스프링은 객체 컨테이너 스프링의 핵심 기능은 객체를 생성하고 초기화 하는 것이다. BeanFactory 인터페이스: 객체 생성과 검색에 대한 기능을 정의한다. ApplicationContext 인터페이스: 메시지, 프로필/환경 변수 등을 처리할 수 있는 기능을 추가로 정의한다. AnnotationConfigApplicationContext: ApplicationContext의 구현체, 자바 어노테이션을 이용하여 클래스로부터 객체 설정 정보를 가져온다. GenericXmlApplicationContext: ApplicationContext의 구현체,XML로부터 객체 설정 정보를 가져온다. GenericGroovyApplicationContext: ApplicationContext의 구현체,그루비 코드를 이..

Spring 2020.07.29