Java-Spring

자바 / 스프링 / 스프링부트 스터디 정리
Java-Spring/이펙티브 자바

[이펙티브 자바] 모든 객체의 공통 메서드

✔️ 모든 객체의 공통 메서드Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로 상속해서 사용하도록 설계되었다.Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의를 염두에 두고 설걔된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다.그래서 Object를 상속하는 클래스, 즉 모든 클래스는 이 메서드들을 일반 규약에 맞게 재정의해야 하므로 이를 다뤄보자.10. equals는 일반 규약을 지켜 재정의하라equals 메서드는 재정의하기 쉬워 보이지만 자칫하면 끔찍한 결과를 초래한다.그냥 둘 경우 그 클래스의 인스턴스는 오직 자기 자신과만 같게 된다.그러니 다음에서 열거한 상황 중 하나에 해당한다면 재..

Java-Spring/이펙티브 자바

[이펙티브 자바] 객체 생성과 파괴

✔️ 객체 생성과 파괴객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법, 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법,제때 파괴됨을 보장하고 파괴 전에 수행해야 할 정리 작업을 관리하는 요령을 알아보자.01. 생성자 대신 정적 팩터리 메서드를 고려하라클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자다.반면 클래스는 생성자와 별도로 정적 팩터리 메서드를 제공할 수 있다.// 정적 팩터리 메서드public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;}정적 팩터리 메서드와 public 생성자는 각자의 쓰임새가 있으니 상대적인 장단점을 이해하고 사용하는 것이 좋다.정적 팩..

Java-Spring/토비의 스프링 3.1

[토비의 스프링 3.1] Vol. 1 스프링의 이해와 원리 - 목차

1장. 오브젝트와 의존관계주요 키워드- 관심사의 분리 (리팩토링)- 전략 패턴- 개방 폐쇄 원칙- 낮은 결합도, 높은 응집도- 제어의 역전 (IoC)- 싱글톤 레지스트리- DI 컨테이너- 의존 관계 주입 (DI)- 생성자 주입과 수정자 주입- XML 설정1.0) 개요1.1) 초난감 DAO1.2) DAO의 분리1.3) DAO의 확장1.4) 제어의 역전(IoC)1.5) 스프링의 IoC1.6) 싱글톤 레지스트리와 오브젝트 스코프1.7) 의존관계 주입(DI)1.8) XML을 이용한 설정2장. 테스트주요 키워드- 테스트 자동화- JUnit 프레임워크- 테스트 일관성- 테스트 포괄성- 테스트 수행 간격- 테스트 주도 개발 방법- 테스트 코드 리팩토링- 테스트 메소드- 스프링 테스트 컨텍스트 프레임워크- 애플리케이션..

Java-Spring/토비의 스프링 3.1

[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 의존 라이브러리(2)

B.2) 모듈별 의존 라이브러리 의존관계의존 라이브러리스프링의 많은 의존 라이브러리 중에서 어떤 것을 사용할지 결정하는 일은 쉽지 않다.가장 좋은 접근 방법은 스프링의 각 모듈별로 필요한 의존 라이브러리를 선택하는 것이다.어떤 스프링 모듈을 사용할지 결정됐다면, 각 모듈별로 활용할 세부적인 기능에 따라서 필요한 라이브러리를 선택하면 된다.거의 대부분의 스프링 의존 라이브러리는 필수가 아니다. 사용할 모듈의 기능에 따라서 의존 라이브러리가 필요할 수도 있고 아닐 수도 있다는 뜻이다.따라서 모듈별 선택 라이브러리 중에서 적절한 라이브러리를 선택할 수 있어야 한다.선택 의존 라이브러리 중에서 패키지 이름이 javax로 시작하는 것은 자바의 표준 API 라이브러리다.표준 API 중 일부는 서버에서 제공되기 때문..

Java-Spring/토비의 스프링 3.1

[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 의존 라이브러리(1)

B.1) 의존 라이브러리의 종류와 특징의존 라이브러리 이름의존 라이브러리는 스프링 개발팀이 만든 것이 아니므로 모듈의 이름에 일정한 패턴이 있지는 않다.하지만 스프링소스가 OSGi 호환 모듈로 재패키징한 모듈의 이름은 일정한 패턴이 있다.예를 들면 최신 아파치 Commons 프로젝트의 Logging 라이브러리 파일의 이름은 commons-logging-1.1.1.jar이다.그런데 스프링소스는 Commons Logging 라이브러리 파일을 OSGi 표준에 맞도록 메타정보를 추가해서 재패키징하고, OSGi 모듈의 명명 규칙을 따라 com.springsource.org.apache.commons.logging-1.1.1.jar 이름의 파일을 만들어 제공한다. OSGi의 명명 규칙을 따라 모듈의 기본 패키지 이..

Java-Spring/토비의 스프링 3.1

[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 의존 라이브러리(0)

B.0) 개요스프링에는 스프링 모듈 외에도 100여 개의 의존 라이브러리가 존재한다.이 의존 라이브러리는 스프링 프레임워크를 빌드하고 테스트하는데 필요한 라이브러리다.스프링 애플리케이션을 개발하고 운영할 때는 이 외에도 다양한 많은 라이브러리가 추가로 필요할 수 있다.스프링의 의존 라이브러리는 스프링의 업데이트마다 새롭게 추가되거나 버전이 바뀔 수 있다.실제 애플리케이션에 적용할 라이브러리와 버전은 검색과 다양한 테스트를 통해 직접 선정할 수 있어야 한다.최신 의존 라이브러리 정보는 스프링 배포판이나 Maven 리포지토리의 POM 정보를 참고하자.

Java-Spring/토비의 스프링 3.1

[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 모듈(2)

A.2) 스프링 모듈의 의존관계스프링 모듈의 필수 의존관계각 화살표는 모듈 사이의 의존관계를 나타낸다.예를 들어 Beans의 필수 의존모듈은 Core와 ASM이므로 Beans 모듈을 사용하려면 Core와 ASM 모듈도 함께 추가해줘야 한다.필수 의존관계는 전이적이므로 스프링의 모듈을 선택할 때는 필수 의존관계에 있는 모든 모듈을 찾아서 포함시켜야 한다.Maven이나 Ivy의 의존 라이브러리 관리 기능을 이용한다면 전이적인 의존관계를 따라서 모든 필수 의존 라이브러리가 자동으로 추가된다.이 외에도 선택 의존관계에 있는 모듈도 있다.필수 의존모듈은 아니지만 일부 모듈의 기능은 필요로 하는 경우도 있다.모듈별 의존관계각 모듈별로 의존하고 있는 모듈의 종류와 관련 기능을 살펴보자.ASM 모듈클래스 바이트코드 조..

Java-Spring/토비의 스프링 3.1

[토비의 스프링 3.1] Vol.1 스프링의 이해와 원리 - 스프링 모듈(1)

A.1) 스프링 모듈의 종류와 특징스프링 모듈 이름스프링 모듈은 jar 확장자를 가진 파일이다. 모든 파일의 이름은 명명 규칙에 따라 두 가지로 만들어져 있다.스프링 모듈은 기본적으로 OSGi의 모듈 명명 규칙을 따라서 패키지 이름과 모듈 버전으로 구성된다.스프링 모듈은 OSGi의 모듈 조건을 충족하는 OSGi 번들이기도 하므로 OSGi 플랫폼에서 바로 가져다 사용할 수 있다.물론 OSGi가 아닌 일반 JavaEE나 JavaSE 환경에서도 아무런 문제 없이 사용할 수 있다.org.springframework.core-3.0.7.RELEASE.jarMaven의 명명 규칙을 따라 만들어진 스프링 모듈 파일도 있다. Maven 모듈 이름에는 패키지를 사용하지 않는다.Maven이나 Ivy를 통해 접근할 수 있는..