본문 바로가기

BackEnd15

[Java] Enum, Const 이야기 Enum 이란? 상수의 묶음이라고 생각하면 좋을 것 같다. 상수라고 한다면 프로젝트에 다음과 같이 구현해서 많이 사용한다. private final static String ACCOUNT_TRANSFER = "계좌이체"; private final static String REMITTANCE = "무통장입금"; Enum은 서로 연관된 상수들을 다음과 같이 묶어서 사용하기 위해 사용을 한다. @Getter @AllArgsConstructor public enum PayType { ACCOUNT_TRANSFER("계좌이체", "1"), REMITTANCE("무통장입금", "2"), CARD("카드", "3"), POINT("포인트", "4"), COUPON("쿠폰", "5"); private String ti.. 2023. 5. 7.
[Spring] 스프링(Spring) 핵심 기술 이야기 4부 - 빈의 스코프 스코프 싱글톤 프로토타입 (Request, Session, WebSocket ... 등) Proto.java @Component @Scope(value = "prototype") // @Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS) public class Proto { @Autowired Single single; } Single.java @Component public class Single { @Autowired Proto proto; public Proto getProto() { return proto; } // @Autowired // private ObjectProvider proto; // // public Proto.. 2020. 10. 11.
[Spring] 스프링(Spring) 핵심 기술 이야기 3부 - @Component와 컴포넌트 스캔 이 글은 백기선 님의 스프링 프레임워크의 핵심 기술 강의를 듣고 복습 차원에서 적은 글입니다. 컴포넌트 스캔 주요 기능 스캔 위치 설정 필터 : 어떤 어노테이션을 스캔할지 또는 하지 않을지 설정이 가능하다. // XML 방식 // Java 방식 @SpringBootApplication public class Spring01Application { public static void main(String[] args) { SpringApplication.run(Spring01Application.class, args); } } // @SpringBootApplication @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes .. 2020. 10. 7.
[JPA] 스프링 데이터 JPA 이야기 번외편 - 영속성 컨텍스트 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 책을 읽고 복습 차원에서 적은 글입니다. JPA 이야기 2부 다음으로 JPA의 영속성 컨텍스트의 개념에 대해서 알아보자! 영속성 컨텍스트란? 우리말로 번역하기는 어렵지만 해석하자면 '엔티티를 영구 저장하는 환경'이라는 뜻이다. 아래의 'entityManager.persist(member);'는 단순히 저장한다고 표현했지만 정확히 이야기하면 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. @Component @Transactional public class JpaRunner implements ApplicationRunner { @PersistenceContext EntityManager entityManager; @Overrid.. 2020. 10. 5.
[JPA] 스프링 데이터 JPA 이야기 2부 - JPA 사용법 이 글은 백기선 님의 스프링 데이터 JPA 강의를 듣고 복습 차원에서 적은 글입니다. 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 책을 읽고 복습 차원에서 적은 글입니다. 스프링 부트를 기반으로 환경설정을 했다. JPA는 엔티티와 테이블을 매핑하고 DB 스키마를 자동으로 생성한다. ddl_auto 옵션으로 로컬에서 편하게 스키마를 만들 수 있다. applicaton.properties spring.jpa.hibernate.ddl-auto=create spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true JpaRunner.class @Component @Transactional public class JpaRunner im.. 2020. 9. 23.
[Java] JUnit5 애플리케이션을 테스트하는 다양한 방법 이야기 2부 이 글은 백기선 님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 듣고 복습 차원에서 적은 글입니다. JUnit5 : 태킹과 필터링 테스트 메소드에 태그를 추가할 수 있다. 하나의 테스트 메소드에 여러 태그를 사용할 수 있다. @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) public class StudyTest { @Test @DisplayName("스터디 만들기 - fast") @Tag("fast") void create_new_study() { System.out.println("create fast"); Study study = new Study(100); assertThat(study.getLimit())... 2020. 9. 22.
[Java] 더 자바, Java 8 이야기 1부 - 함수형 인터페이스 & 람다 이 글은 백기선 님의 더 자바, Java 8 강의를 듣고 복습 차원에서 적은 글입니다. Java 8 에서는 무엇이 바뀌었을까? 현재 자바 개발자 중 약 83%가 사용 중이라고 한다. 이 글을 통해서 확실히 공부해놓으면 좋을 것 같다. 함수형 인터페이스 (Function Interface) 추상 메소드를 딱 하나만 가지고 있는 인터페이스이다. SAM(Single Abstract Method) 인터페이스라고도 불린다. @FuncationInterface 어노테이션을 가지고 있는 인터페이스이다. @FunctionalInterface public interface Foo { void doIt(); } 람다 표현식 (Lambda Expressions) 함수형 인터페이스의 인스턴스를 만드는 방법으로 사용된다. 코드.. 2020. 9. 20.
[Java] 컬렉션 프레임워크(collection framework) 이야기 2부 - Set Set Collection Set의 특징으로는 List와는 다르게 중복 값을 허용하지 않는다. 또한 인덱스로 접근하지 않기 때문에 성능적으로 부족한 면이 있다. HashSet Set의 특징답게 중복값을 허용하지 않는다. 같은 요소를 추가하는 경우 false를 반환한다. (이러한 특징을 이용하면 알고리즘에서 중복 제거하기 편할 것이다.) 저장 순서를 유지하지 않으므로 저장 순서를 원한다면 LinkedHashSet을 사용해야 한다. 또한 null값을 저장할 수 있다. public class Main { public static void main(String[] args) { // Array System.out.println("==== Array ===="); String[] strings = {"a", "d.. 2020. 9. 18.
[Java] 컬렉션 프레임워크(collection framework) 이야기 1부 - List 최근 알고리즘에서 또는 JPA는 자바에서 기본으로 제공하는 Collection을 지원하고 있기 때문에 한번 정리할 필요성을 느꼈다. List Collection 색인(Index)을 사용하여 특정 위치에 요소를 삽입하거나 접근할 수 있으며 중복 요소를 허용한다. ArrayList&Vector 방식의 차이만 있을 뿐 사용방법은 거의 동일하다. ArrayList Vector 비동기 방식이다. 동기방식을 사용하더라도 Collections 클래스의 synchronized로 구현한다. 동기 방식이다. 데이터의 안정화를 보장하나 성능적인 측면에서 많이 부족하다. ArrayList vs Array ArrayList Array 사이즈가 동적이다. 추가시 메모리가 재할당되어 속도가 느리다. 다차원 구현이 불가능 하다. 사.. 2020. 9. 17.