Java(22)
-
[Spring 핵심 원리 #3] 스프링 핵심 원리 이해 2
앞에서 진행해 온 프로젝트에서 새로운 할인 정책을 추가하는 요구사항이 발생했다는 가정 하에 진행하겠습니다. 할인 정책을 추가하게 되면 DIP, OCP를 지키지 못할 수도 있습니다. 이러한 문제를 해결하며 왜 스프링 컨테이너가 탄생했는지도 알아보겠습니다. 또한 앞에서 만든 순수 자바 코드를 스프링 컨테이너에서 동작하도록 바꿔보도록 하겠습니다. 이 카테고리에 있는 포스트는 인프런 김영한 강사님의 '스프링 핵심원리 - 기본편' 내용을 개인 공부용도로 정리한 것입니다. #1. 새로운 할인 정책 개발 기존에 정액 할인 정책이 아닌 정률 할인 정책에 대한 구현과 테스트를 작성해보겠습니다. hello.core/discount/RateDiscountPolicy package hello.core.discount; imp..
2021.07.23 -
[Spring 핵심 원리 #2] 스프링 핵심 원리 이해 1
프로젝트 생성 비즈니스 요구사항과 설계 회원 도메인 설계 회원 도메인 개발 회원 도메인 실행과 테스트 주문과 할인 도메인 설계 주문과 할인 도메인 개발 주문과 할인 도메인 실행과 테스트 이 카테고리에 있는 포스트는 인프런 김영한 강사님의 '스프링 핵심원리 - 기본편' 내용을 개인 공부용도로 정리한 것입니다. 1. 프로젝트 생성 역할과 구현을 나누어서 즉, 인터페이스와 구현 객체를 나눠 순수 Java로만 개발을 해보겠습니다. 순수한 자바로 진행하지만 프로그램 세팅에 있어서 편의를 위해 스프링으로 세팅하겠습니다. Requirement Java 11 설치 IntelliJ or Eclipse 스프링 부트 스타터 사이트로 프로젝트 생성 (https://start.spring.io/) 프로젝트 선택 Project:..
2021.07.16 -
[Spring 핵심 원리 #1.1] 객체 지향 설계와 스프링
이 카테고리에 있는 포스트는 인프런 김영한 강사님의 '스프링 핵심원리 - 기본편' 내용을 개인 공부용도로 정리한 것입니다. 객체 지향 설계와 스프링 스프링 핵심 원리 이해 1 - 예제 활용 스프링 핵심 원리 이해 2 - 객체 지향 원리 적용 스프링 컨테이너와 스프링 빈 싱글톤 컨테이너 컴포넌트 스캔 의존관계 자동 주입 빈 생명주기 콜백 빈 스코프 자바 진영의 추운 겨울과 스프링의 탄생 과거 2000년대 초반에 자바 표준 기술 중 EJB(Enterprise Java Beans)가 제일로 불려져왔었습니다. 지금으로 본다면 Spring, JPA 등을 모두 제공하는 기술이라고 볼 수 있습니다. 실제로 당시에 기술 영업을 할 때도 EJB를 이용한 기술 영업을 많이 했었습니다. 하지만 가격이 매우 비싸다는 단점이 ..
2021.07.05 -
3. Java - static, final
Java의 non-static 멤버와 static 멤버의 차이 non-static 멤버 공간적 특성 : 멤버는 객체마다 별도로 존재한다. - 인스턴스 멤버라고 부른다. 시간적 특성 : 객체 생성 시에 멤버가 생성된다. - 객체가 생길 때 멤버도 생성된다. - 객체 생성 후 멤버 사용이 가능하다. - 객체가 사라지면 멤버도 사라진다. 공유의 특성 : 공유되지 않는다. - 멤버는 객체 내에 각각의 공간을 유지한다. static 멤버 공간적 특성 : 멤버는 클래스당 하나가 생성된다. - 멤버는 객체 내부가 아닌 별도의 공간에 생성된다. - 클래스 멤버라고 부른다. 시간적 특성 : 클래스 로딩 시에 멤버가 생성된다. - 객체가 생기기 전에 이미 생성된다. - 객체가 생기기 전에도 사용이 가능하다. (즉, 객체를..
2021.06.22 -
2. Java - String / StringBuffer / StringBuilder
분류 String StringBuffer StringBuilder 변경 Immutable Mutable Mutable 동기화 Synchronized 가능(Thread-safe) Synchronized 불가능 String 특징 - new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않는다.(Immutable) - Garbage Collector로 제거되어야 한다. - 문자열 연산시 새로 객체를 만드는 Overhead 발생한다. - 객체가 불변하므로, Multi-Thread 에서 동기화를 신경 쓸 필요없다. (조회 연산에 장점) > 문자열 연산이 적고, 조회가 많은 Multi-thread 환경에서 좋다. StringBuffer, StringBuilder 특징 공통점 - new 연산으로 클래스를 한 번..
2021.06.21 -
1. Java 이해하기
1. Java 언어의 장단점 장점 - OS에 독립적이다 : JVM에서 동작하기 때문 - 객체지향 언어이다 - 자동으로 메모리를 관리해준다 : GC로 인해 별도의 메모리 관리가 필요없다 - 오픈소스이다 : OpenJDK가 오픈소스이다. - 멀티스레드를 쉽게 구현할 수 있다 : 스레드 생성 및 제어와 관련된 라이브러리 API를 제공한다. - 동적 로딩을 지원한다 : 애플리케이션이 실행될 때 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다. 전체 애플리케이션을 다시 컴파일할 필요가 없으므로 유지보수가 쉽고 빠르다. 단점 - 비교적 속도가 느리다 : JVM에 의해 기계어로 번역되고 실행하는 과정을 거치므로 C/C++ 보단 속도가 느린 편이다. - 예외처리가 불편하다 2. Java의 데이터 타입 1. 기..
2021.06.21