본문 바로가기

Computer Sience/Java33

[Effective Java] 아이템2: 생성자에 매개변수가 많다면 빌더를 고려해라 Chapter 02: 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법올바른 객체 생성 방법에 대한 설명빌더 등장 배경 디자인 패턴 - 빌더 패턴 정리 [Design Pattern] 빌더(Builder) 패턴빌더 (Builder) 패턴동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법(복잡한) 객체를 만드는 프로세스를 독립적으로 분리할 수 있다빌더 패턴 적용 Before@Getter @Setter @ToSt20240228.tistory.com이펙티브 자바 아이템1 정적 팩터리 메소드 [Effective Java] 아이템1: 생성자 대신 정적 팩터리 메소드를 고려해라Chapter 02: 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법올바른 객.. 2024. 10. 22.
[Effective Java] 아이템1: 생성자 대신 정적 팩터리 메소드를 고려해라 Chapter 02: 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법올바른 객체 생성 방법에 대한 설명정적 팩터리 메서드클래스 인스턴스를 얻는 기본적인 방법 → public 생성자 클래스는 생성자와 별도로 정적 팩터리 메소드(static factory method)를 제공할 수 있다.단순하게 클래스 인스턴스를 반환하는 정적 메소드  Boolean class public final class Boolean implements java.io.Serializable, Comparable, Constable { public static final Boolean TRUE = new Boolean(true); public static final Boolean FALS.. 2024. 10. 21.
[JAVA] 다이나믹 프록시 스프링 데이터 JPA는 어떻게 동작할까?@Entity@Setterpublic class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; @Column(name = "TITLE") private String title;}public interface BookRepository extends JpaRepository {}스프링 데이터 JPA에서는 JpaRepository를 상속받기만 하면 별도의 구현체를 제공하지 않아도 자동으로 필요한 메서드들이 동작한다. 이는 스프링의 DI(의존성 주입)와 프록시 패턴을 사용하여 구현된 구조 덕분이다.  프록시 생성스프링 데이터 JPA는 @EnableJpaRepositor.. 2024. 10. 16.
[JAVA] Reflection 스프링의 Depedency Injection은 어떻게 동작할까?@Repositorypublic class BookRepository {}@Servicepublic class BookService { public final BookRepository bookRepository; public BookService(BookRepository bookRepository) { this.bookRepository = bookRepository; }}@SpringBootTestclass BookServiceTest { @Autowired BookService bookService; @Test public void diTest(){ assertThat(bo.. 2024. 10. 10.
[JAVA] 바이트 코드 조작 코드 커버리지는 어떻게 측정할까? JaCoCo(Java Code Coverage) Java 애플리케이션에서 테스트 커버리지를 측정하는 오픈 소스 라이브러리이다. 주로 단위 테스트, 통합 테스트 등을 실행할 때 각 코드가 얼마나 실행되었는지(커버리지)를 확인하기 위해 사용된다.JaCoCo는 Maven, Gradle 같은 빌드 도구와 쉽게 통합할 수 있어, 테스트를 실행할 때 자동으로 코드 커버리지 리포트를 생성한다. 이 리포트는 HTML, XML, CSV 등의 다양한 포맷으로 제공되며, 이를 통해 코드가 충분히 테스트되고 있는지 파악하고, 테스트를 추가해야 할 부분을 쉽게 찾을 수 있다.JaCoCo 문서 https://www.eclemma.org/jacoco/trunk/doc/index.html간단하게 테.. 2024. 10. 10.
[JAVA] JVM 전체 구조 정리 해당 그림은 자바 7 이하 버전의 전체 구조이다. 자바 7 이하 버전의 메소드 영역 PermGen(Permanent Generation) ↔ 메소드 영역(Method Area) 자바 7 이하 버전에서는 메소드 영역에 해당하는 메모리 공간이 PermGen 영역에 있었다.클래스 메타데이터(클래스 이름, 메소드, 상수 풀, 클래스 변수 등)를 저장하는 영역  PermGen에 저장되는 정보들// 클래스 이름 / 부모 클래스 (Object) -> 저장 Opublic class Example { // 클래스 변수 (Static Field) -> 저장 O public static String CLASS_NAME = "ExampleClass"; // 인스턴스 변수 -> 저장 X priva.. 2024. 10. 8.