전체 글

전체 글

    docker 기본 사용법

    계속해서 수정중... docker search 도커 허브에서 이미지 목록 검색 기본 포맷 docker search 검색어 docker pull 도커 허브에서 이미지 내려받는 명령어 기본 포맷 docker pull 내려받을이미지 docker images 이미지 리스트 표시 docker run 이미지로부터 새로운 컨테이너를 만들고, 실행하기 위해 쓰이는 명령어 기본 포맷 docker run (option) (명령어) (인자) -d 옵션 컨테이너를 백그라운드에서 실행할때 사용하는 옵션. -d 옵션을 사용하면 detached모드로 실행된다. docker run -d python:3.8-alpine python -m http.server -d 모드로 실행하지 않는 경우 터미널에 종속되고, ctrl + c 로 빠져..

    docker mysql 설치

    1. MySQL Docker 이미지 다운로드 docker pull mysql mysql 도커 이미지를 내려받는다. 뒤에 버전을 명시하면 특정 버전, 아니면 최신을 가져온다. (ex :8.0.17) 2. M1 맥 docker mysql 다운로드 //아래 명령어 한줄로 만들어서 사용! //필요한 내용만 지정해서 docker run --platform linux/amd64 -p 3306:3306 --name [컨테이너 이름] -e MYSQL_ROOT_PASSWORD=[루트 패스워드] -e MYSQL_DATABASE=[데이터베이스 이름] -e MYSQL_USER=[유저 사용자명] -e MYSQL_PASSWORD=[유저 패스워드] -d mysql 2-1 컨테이너 접근 docker exec -it mysql /bi..

    Spring Envers 로 자동 이력 관리

    @EnableJpaAuditing 설정 클래스에 적용 함으로써 JPA 이력관리를 사용하도록 설정한다. @Audited @Audited(withModifiedFlag = true) @Entity public class Person { @Id @GeneratedValue private Long id; @Embedded private AuditMetadata auditMetadata; } @Embeddable public class AuditMetadata { @CreatedBy private Integer registeredBy; @CreatedDate private LocalDateTime registeredAt; @LastModifiedBy private Integer updatedBy; @LastMod..

    JPA @ElementCollection

    @ElementCollection @Entity 가 아닌 기본 자바 클래스나 @Embeddable 클래스로 정의된 컬렉션을 다루며, OneToMany 의 관계를 갖는다. @Entity public class Sample extends AbstractAggregateRoot { @Id @GeneratedValue private Long SampleNo; @ElementCollection private Set tags = new HashSet(); @ElementCollection @CollectionTable(name = "SampleScore", joinColumns = @JoinColumn(name = "SampleNo")) private List scores = new ArrayList(); } @E..

    Spring Event

    Spring Event 특정 이벤트를 발행(publish) 하면, 해당 이벤트가 발행되기를 대기하고 있던 리스너가 실행된다. 이벤트 발행 클래스와 리스너 클래스간 코드 의존성이 없다. 리스너 실행을 비동기로 실행할 수 있다. 이벤트 클래스 public class CustomEvent extends ApplicationEvent { @Getter private String message; public CustomEvent(Object source, String message) { super(source); this.message = message; } } ApplicationEvent 를 상속받는다. super 생성자를 반드시 실행해 줘야 한다. 이벤트 발행자(publisher) 클래스 @RequiredA..

    Spring 메소드 실행 실패시 재실행

    Spring Retry 메서드가 실패 하였을때 재 실행 할 수 있도록 도와주는 Spring AOP의 일종 이다. 네트워크 호출과 같은 일시적 문제가 있을 경우 사용한다. build.gradle Dependency 추가 implementation group: 'org.springframework.retry', name: 'spring-retry', version: '1.3.1'Retry 사용이 가능하도록 annotation 설정 @EnableRetry @SpringBootApplication public class RanchatApplication { public static void main(String[] args) { SpringApplication.run(..

    java annotation

    어노테이션은 기본적으로 메타 어노테이션으로 구성되어 있다. 메타 어노테이션 @Retention 자바 컴파일러가 어노테이션을 다루는 방법을 기술하며, 특정 시점까지 영향을 미치는지를 결정 종류 RetentionPolicy.SOURCE - 컴파일 전까지만 유효하고 컴파일 하면 사라진다. RetentionPolicy.CLASS - 컴파일러가 클래스를 참조할때 까지만 유효하다. (class파일 에서도 존재는 하지만, invisible옵션을 통해 런타임 메모리에서는 제거됨) RetentionPolicy.RUNTIME - 런타임에도 어노테이션이 유효하므로 reflection사용 가능 @Target 어노테이션이 적용될 수 있는 위치를 선택하는 메타 어노테이션 종류 ElementType.PACKAGE ElementTy..

    Spring Rest Docs 사용법

    Spring Rest Doc?? 기존에 사용하던 Swagger는 소스코드의 작동과는 연관이 거의 없기 때문에, 로직이 변경 되더라도 api 명세 어노테이션 등을 변경해주지 않으면 최신화가 되지 않는 문제가 있다. Spring Rest Docs 를 이용하면 반드시 테스트코드가 통과 해야 문서가 생성된다.(asciiDoc 이 생성) 따라서 api 문서의 정확성이 보장된다. asciiDoc?? markdown 과 같이 특정 표현식을 통해 문서를 작성하는 도구이다. 개인적인 생각으론 markdown 에 비해 사용성은 불편하지만, include와 같은 기능을 통해 api명세를 만들기엔 좋은 것 같다. (markdown이 include를 지원하게 되면 markdown 이 더 좋을듯...) RestDocs를 사용하기..

    Jackson 어노테이션 정리

    jackson은 기본적으로 프로퍼티 기반이므로 getter, setter 에 적용된다. @JsonProperty 해당 필드를 프로퍼티로 적용한다. json으로 변환시 키값 표기를 변경할 수 있다. @JsonProperty(value="member_id") String memberId; @JsonIgnore 어노테이션이 적용된 필드는 JSON변환시 적용되지 않는다. @JsonInclude 클래스 레벨에서 json변환에 사용될 설정을 추가할 수 있다. @JsonInclude(JsonInclude.Include.ALWAYS) public class Member { .... } JsonInclude.Include.ALWAYS: 모든 값을 json변환시 포함한다. JsonInclude.Include.NON_NUL..

    Spring Batch

    1. Job은 하나의 배치 작업 단위를 얘기한다. 2. 하나의 Job은 여러개의 Step을 가지고 있다. 3. step 은 tasklet 이나 reader, processor, writer 묶음을 가지고 있을 수 있다. tasklet 과 reader, processor, writer 묶음은 같은 레벨이므로 reader > processor > tasklet 등으로 끝낼 순 없다. 4. reader, processor, writer 묶음으로 처리하는 방식을 chunk 지향 처리 방식 이라 한다. 5. ItemReader, ItemProcessor, ItemWriter 를 구현하여 각 컴포넌트 를 작성 해야 한다. stepBuilderFactory.get("name") .chunk(2) .reader(rea..