Jib 란? Jib는 도커 데몬 없이 Java 앱의 OCI 이미지( 도커 이미지 )로 만들어주는 플러그인 입니다. Maven, Gradle과 함께 사용할 수 있습니다. 그럼 기존의 Docker 빌드로 이미지를 생성하는 것과 Jib 빌드로 이미지를 생성하는 것을 비교해 보겠습니다. Docker에서는 Dockerfile을 정의를 하고, docker build 명령으로 도커 이미지를 만들게 됩니다. 자바 앱의 경우에는 자바 소스를 빌드하여 jar, war를 생성 한 뒤에 Dockerfile에 이 파일을 이용하여 도커 이미지를 만들게 됩니다. 언뜻 보면 간단해 보이지만, 이를 자동화 하기에는 조금 번거로운 것이 사실입니다. 이를 개선하기 위해 Jib가 만들어졌으며, 위의 그림에서 보듯이 Dockerfile 없이..
목차 Annotation? 자바 어노테이션은 자바 코드에 메타 데이터를 제공하기 위해 사용됩니다. @ 문자와 어노테이션 이름으로 구성이 되며, 컴파일러에서는 @ 문자로 시작이 되면 어노테이션으로 판단을 합니다. 어노테이션은 값을 저장할 수 있는 엘레멘트를 가지며, 어노테이션 이름 다음에 괄호 안에 엘레멘트를 정의합니다. @Entity(name = "table") 위의 어노테이션은 Entity라는 이름의 어노테이션이고 name이라는 엘레멘트를 가지며 name 엘레멘트의 값은 table입니다. 어노테이션은 클래스, 인터페이스, 메소드, 메소드 파라메터, 필드, 지역 변수 위에 위치할 수 있습니다. @Entity public class Animal { } Built-in Java Annotations Java..
목차 사용자 정의 어노테이션을 정의하여, 특정 메소드에 정의한 어노테이션을 선언하고 이 어노테이션이 정의 되어 있는 메소드를 찾아 메소드 이름을 출력하는 스프링부트 프로그램을 작성해보겠습니다. Annotation 정의 @interface를 사용하여 Print 어노테이션을 정의합니다. 어노테이션에 3개의 element를 정의합니다. 메소드에 적용 및 런타임에 사용하기 위해 Retention과 Target을 선언합니다. package com.example.anno.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; i..
목차 객체 업로드 S3에 객체를 업로드하는 코드 입니다. 업로드할 버킷의 지역, 버킷명, 객체명(파일명) 그리고 파일의 데이터를 byte로 하여 S3Client의 putObject함수를 이용하여 업로드 할 수 있습니다. Region region = Region.AP_NORTHEAST_2; S3Client s3 = S3Client.builder().region(region).build(); String bucketName = "bucket"; String objectKey = "test.csv"; putS3Object(s3, bucketName, objectKey, getObjectFile("path/of/file")); private String putS3Object(S3Client s3, String ..
1. List 생성 new 로 List를 생성하고, add() 함수로 리스트에 값을 추가해 줄수 있지만 코드를 보다 짧게 작성하고 싶을땐 asList 함수를 사용하여 생성하면 됩니다. 그리고 생성된 List를 ArrayList로 만들고 싶을 땐, addAll() 함수로 List의 모든 값을 넣어주면 됩니다. // List 생성 List list = Arrays.asList("item1", "item2"); // List로 ArrayList 생성 ArrayList arrayList = new ArrayList(); arrayList.addAll(list); 2. 빈 List 생성 예외적인 케이스에 비어있는 리스트를 만들기 위해 종종 사용합니다. List list = Collections.emptyList();
자바의 제네릭(Generic)에 대해 알아보겠습니다. 제네릭은 데이터의 타입을 일반화 해주며, 컴파일 시에 타입이 정해집니다. 예를 들어, ArrayList 객체를 생성할 때 안에 타입 파라미터를 정의하여 ArrayList에 어떤 타입의 데이터를 담을 것인지를 명시합니다. List numberList = new ArrayList(); ArrayList의 클래스를 보면 ArrayList로 제네릭을 사용하여 정의가 되어 있는데, 위와 같이 Integer 타입 파라미터를 정의하여 객체를 생성하면, 컴파일 시에 제네릭은 E는 Integer 타입이 되고, add함수는 add(Integer e)가 되어 Integer만을 받아 arrayList의 엘레멘트에 추가를 합니다. public class ArrayList e..
1. Lambda 함수 생성 2. JAVA 패키지 빌드 3. 배포 패키지 업로드 및 핸들러 메서드 정의 4. 테스트 이벤트 생성 및 테스트 1. Lambda 함수 생성 Function name을 작성, Runtime에 Java를 선택, Permissions에 적절한 role을 선택해 줍니다. 2. JAVA 패키지 빌드 blank-java 코드를 다운 받습니다. dependencies { implementation 'com.amazonaws:aws-lambda-java-core:1.2.1' implementation 'com.amazonaws:aws-lambda-java-events:3.1.0' runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.2.0' } tas..
JAVA 를 정적분석해주는 2개의 프로그램을 소개하려고 합니다. Spotbugs는 Java의 바이트코드를, PMD는 Java 소스코드를 체크하여 정적분석을 해줍니다. 둘다 정적분석이라는 점에서는 같지만 점검하는 대상이 다르기 때문에 서로 정적분석 하는 관점도 달라지게 됩니다. 그렇기 때문에 어느 것이 더 좋다 라고 하기는 힘들고, 서로 찾아주는 문제점들이 다르기 때문에 모두 사용하는 것을 추천합니다. ( stackoverflow.com/a/4297378/1813672 ) Spotbugs Gradle 5.6 이전까지만 해도 FindBugs라는 plugin이 사용되어 왔으나 Gradle 5.6 버전 이후부터, FindBugs plugin이 삭제가 되어, 대신에 SpotBugs plugin을 사용할 수 있습니..
JAVA 를 쓰다보면, 버전이 급격하게 다른걸 한번씩 보게 되는데 뭐지? 라고 생각은 했으나 그냥 별 생각없이 써왔었습니다. 그러다 문득 sourceCompatibility 를 설정 하다가 버전이 너무 낮은 것 같아( 1.8 ) 로컬에 설치된 JAVA 버전을 확인하니 "11.0.1" !!! 음?? 너무 버전차이가 심한것 아닌가 싶어서 알아보게 되었습니다. 먼저 gradle에 sourceCompatibility 설정 값을 찾아보니, 아래와 같이 JavaVersion.class에 enum type으로 정의가 되어있습니다. VERSION_1_1 VERSION_1_2 VERSION_1_3 VERSION_1_4 VERSION_1_5 VERSION_1_6 VERSION_1_7 VERSION_1_8 VERSION_1..
- Total
- Today
- Yesterday
- maven
- Container
- gradle
- Kibana
- docker
- Spark
- SpringBoot
- Index
- Filter
- spring
- JSON
- apm
- intellij
- spring boot
- Postman
- AWS
- logstash
- mac
- JPA
- error
- Java
- Log
- elasticsearch
- Size
- Linux
- scala
- tomcat
- plugin
- install
- Git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |