목록Programming Language (59)
이야기박스
Item 34. int 상수 대신 열거 타입을 사용하라정수 열거 패턴 --> namespace가 없음==> enum은 클래스 형태 (namespace 제공) enum --> public static final field 제공==> 싱글턴의 일반화한 형태 * 에러 모듈 생성해서 여러 곳에서 사용하게 할 수 도 있음Item 35. ordinal 메서드 대신 인스턴스 필드를 사용하라ordinal 메서드 --> 해당 상수가 열거 타입에서 몇번째인가?==> 유지보수 측면에서 힘듬--> 순서 바뀌면 어떻게 할 것인가? ===> 그냥 인스턴스 필드로 표시하자! Item 36. 비트 필드 대신 EnumSet을 사용하라비트 필드 : 비트별 or 연산을 사용하여 여러 상수를 하나의 집합으로 모을 수 있게 하는 것==> 정..
예시를 보여주는 장 * connection close()커넥션을 풀로 다시 반환해주는 것 * resultSet close()try-catch-finally 예외처리 합시다 !!- 실수할 여지가 있음--> 책에서는 분리&재사용을 위한 디자인 패턴 적용을 말함앞에서 다루었던 템플릿 메서드 패턴, 전략 패턴 적용함 마이크로 DI 주로 생각하는 DI (DI 컨테이너 - 클라이언트)마이크로 DI (오브젝트 팩토리 - 클라이언트) * try-with-resources 구문을 사용하는 것이 더 좋은 것 같아요.String sql = "select 1"; try(Connection connection = DriverManager.getConnection("","","")) { // 이하 동문 } catch (SQLEx..
제네릭은 자바5부터 사용되었습니다.제네릭 이전에는 컬렉션에서 꺼낼 때마다 형변환 해줬어야 했지만 제네릭은 컴파일러에게 컬렉션이 담을 수 있는 타입을 알려주고 형변환을 컴파일러에게 맡기게 됩니다. 많이 편해졌죠..Item 26 로 타입은 사용하지 말라제네릭 클래스, 제네릭 인터페이스클래스와 인터페이스 선언에 타입 매개변수가 쓰인 것==> 이를 통틀어 제네릭 타입이라고 부름 제네릭 타입은 일련의 매개변수화 타입(Parameterized type)을 정의함 List ==> String이 매개변수화 타입 raw type이란? 매개변수화 타입이 지정이 안된 것--> List이렇게만 쓰인것 로 타입은 제네릭이 지원되기 이전에 사용되던 것, 호환성 때문에 현재도 서비스 중이지만 좋은 방법은 아니다. 이유- 로 타입은..
오브젝트 팩토리 라이브러리 vs 프레임워크라이브러리 - 우리가 순서 정함프레임워크 - 순서 정해져 있음 --> 위에 얹을 뿐 어플리케이션 컨텍트 장점1. 팩토리 구체적으로 알 필요 없음2. 종합 IoC3. 빈 검색 다양한 방법 제공 DI spring boot에서 기본으로 bean 등록된거 호출하는거 말고, 어떻게 호출하는지? xml 을 통한 주입 --> @configuration의존성 넣을때 수정자 [구조 검사]dtd, schema를 통해서 검사근데 실제로는 겁나 어려움스키마는 IDE에서 지원해주니까 이걸로 씁시다 [xml 적용]applicationContext.xml 만들고main 에서 new Generic---(path) [DataSource 인터페이스]dataSource.set~~~()===>
Item 15. 클래스 멤버의 접근 권한을 최소화하라[캡슐화(정보 은닉)] --> 소프트웨어 설계의 근간 * parnas72 ==> "On the Criteria To Be Used in Decomposing Systems into Modules"( paranas72 참조 pdf 링크 ) 개발 속도 상승관리 비용 낮춤성능 최적화재사용성시스템 제작 난이도* 돌고 돌아서 서로 관련됨... 기본 원칙 ==> 모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다. package-private을 쓰는 이유?--> 내부 모듈이 되어 다음 릴리스에 쉽게 업데이트 가능--> public으로 한다면, 하위 호환을 계속 신경써주어야 함 public class의 public 필드는 스레드 세이프 하지 못함 가변 배열의 경우..
스프링의 핵심 철학기본으로 돌아가서 객체 지향의 진수를 보여주자==> 오브젝트의 깊은 관심을 가져야 함--> 오브젝트 설계--> 객체지향 설계 그 첫 번째, 데이터 모델을 관리해주는 DAO !!DAO[DAO란?]Data Access ObjectDB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트 [AOP란]Aspect Oriented Programming비지니스 로직 + 공통 모듈 ==> 기능 구현특정 관점(예를 들면 기능)에서 모듈을 나누고 이 모듈에 비지니스 로직을 삽입하는 방식으로 개발하는 것 [관심사 분리 예제]- 메소드 분리- 클래스분리- 인터페이스 구성--> ( git ) 기타 용어[자바빈]- 디폴트 생성자 : 파라미터가 없는 생성자- 프로퍼티 : getter/setter..
[ Spring ]What is Spring?Java Enterprise Application Framework 1. 스프링 컨테이너컨테이너란?애플리케이션 컨테이너는 휴대성을 극대화하는 한편 실행하기 위해 필요로 하는 파일, 변수, 라이브러리 등을 애플리케이션에 제공하는 경량의 런타임 환경 2. 공통 프로그래밍 모델- Ioc/DI- 서비스 추상화 - AOP 3. 기술 API다양한 영역에서 사용 가능- UI, 비지니스 서비스, 기반 서비스, 도메인, 데이터 액세스 등 Spring 장점1. Simplicity단순 객체지향 호복 2. Flexibility다른 프레임워크와 연동 유연함 3. 아키텍쳐9년간 코드 베이스를 흔들거나 새로 만드는 일 없이, 기존 설계 & 코드 유지하며 발전하여 옴 (장점일까?) Spr..