[Spring 핵심원리 - 기본] 싱글톤 컨테이너
Back-End/Spring2024. 1. 30. 00:34[Spring 핵심원리 - 기본] 싱글톤 컨테이너

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 웹 애플리케이션과 싱글톤 패턴 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 물론 웹이 아닌 애플리케이션 개발도 얼마든지 개발할 수 있다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 만약 싱글톤 패턴이나 싱글톤 컨테이너를 사용하지 않는다면 아래의 그림과 같이 사용자가 요청을 할 때마다 객체가 생성될 것이다. 싱글톤 패턴에 대한 내용은 아래의 글을 참고해주세요. 2023.01.04 - [Java Category/Java] - [JAVA] 싱글톤(Singleton), final 필드와 상수 하지만 싱글톤 패턴의 문제점이 있다...

[Spring 핵심원리 - 기본] 스프링 컨테이너와 스프링 빈
Back-End/Spring2024. 1. 29. 00:05[Spring 핵심원리 - 기본] 스프링 컨테이너와 스프링 빈

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 스프링 컨테이너 생성 ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext 는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 이전에 AppConfig 를 사용했던 방식이 어노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다. 자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext )를 만들어보자. //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationConte..

[Spring 핵심원리 - 기본] 객체 지향 원리 적용
Back-End/Spring2024. 1. 28. 00:13[Spring 핵심원리 - 기본] 객체 지향 원리 적용

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 새로운 할인 정책 개발 새로운 할인 정책을 확장해보자. 악덕 기획자가 서비스 오픈 직전에 할인 정책을 변경하고 싶어한다. 기존에는 VIP 고객이 주문 금액에 관계없이 일정 금액(예: 1000원)을 할인받는 방식이었지만, 이제 주문 금액의 일정 비율(예: 10%)을 할인하는 방식으로 변경하고자 한다. 순진 개발자는 처음부터 고정 금액 할인 방식에 반대했지만, 악덕 기획자는 애자일 개발 방식을 인용하며 변화에 대응할 것을 주장한다. 순진 개발자는 유연한 설계를 위해 객체지향 설계 원칙을 이미 준수했기 때문에 상관없다고 생각한다. 순진 개발자가 정말 객체지향 설계 원칙을 잘 준수 했는지 확인해보자. 이번에는 주문한 ..

[Spring 핵심 원리 - 기본] 예제 만들기
Back-End/Spring2024. 1. 27. 00:50[Spring 핵심 원리 - 기본] 예제 만들기

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 회원 도메인 설계 회원 도메인 요구사항 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 도메인 협력 관계 회원 클래스 다이어그램 회원 객체 다이어그램 회원 서비스: MemberServiceImpl 구현 클래스가 하나밖에 없을 때는 Impl을 관례적으로 붙인다고 한다. 회원 도메인 개발 회원 엔티티 회원 등급 package hello.core.member; public enum Grade { BASIC, VIP } 회원 엔티티 package hello.core.member; public cl..

[Spring 핵심원리 - 기본] 객체 지향 설계와 스프링
Back-End/Spring2024. 1. 26. 00:55[Spring 핵심원리 - 기본] 객체 지향 설계와 스프링

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 자바 진영의 표준 기술이었던 Enterprise Java Beans (EJB)는 복잡하고 어려우며 의존적이고 느렸음. 스프링 2002년 로드 존슨 책 출간 EJB의 문제점 지적 지금의 스프링 핵심 개념과 기반 코드가 들어있음 BeanFactory, ApplicationContext, POJO, 제어 역전, 의존관계 주입 단순함의 승리 현재 사실상 표준 기술 EJB 엔티티빈 기술을 대체 -> 하이버네이트 -> JPA JPA는 인터페이스이다. 따라서 구현체가 필요한데, 대표적인 구현체는 하이버네이트, EclipseLink 등이 있다. 스프링 생태계 스프링은 여러 가지 기술들의 모음. 스프링 프레임워크: 스프링의 핵..

[Spring 입문] AOP (Aspect Oriented Programming)
Back-End/Spring2024. 1. 25. 00:42[Spring 입문] AOP (Aspect Oriented Programming)

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. AOP가 필요한 상황 몇개의 메서드에 실행시간을 체크해보고싶은 상황이라고 한다면 해당 메서드들의 시작과 끝에 시간을 측정하고 출력하는 코드를 붙여야할 것이다. 다행히 그게 몇개 밖에 되지않는다면 괜찮겠지만 만약 몇십개, 몇백개라면 노가다 작업을 해야할 것이다. 예를 들어, AOP를 적용하지 않고, 각 메서드마다 실행시간을 측정을 해야한다면 아래와 같은 문제점을 만나게 된다. 회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 시간을 측정하는 로직은 공통 관심 사항이다. 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다. 시간을 측정하는 로직을 별도의 공통 로직으로 만들..

[IntelliJ] 자주 사용하는 단축키 정리
Back-End/기타2024. 1. 24. 09:19[IntelliJ] 자주 사용하는 단축키 정리

Maccommand + shift + [ 또는 ] : 좌,우 탭 전환command + shift + t : 테스트 케이스 생성option + enter : static importcommand + option + v : 리턴 값을 받아줄 변수 자동 생성command + n : 생성자, getter, setter 등 자동 생성command + d : 라인 복제ctrl + t : 리팩토링ctrl + option + o : 사용하지 않는 import문 정리option + command + m : 메서드 추출 리팩토링 (extract method)command + option + 왼쪽 or 오른쪽 : 프로젝트 탐색창 좌우 크기조절command + option + b: 인터페이스의 구현체 리스트를 보여줌comma..

[Spring 입문] 스프링 DB 접근 기술
Back-End/Spring2024. 1. 24. 00:48[Spring 입문] 스프링 DB 접근 기술

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. H2 데이터베이스 설치 H2 데이터베이스는 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공한다. https://www.h2database.com/html/main.html 위 사이트에서 H2 데이터베이스를 설치한다. 브라우저 창이 열리면서 다음과같은 화면이 출력된다. JDBC URL : jdbc:h2:~/test (최초 한번 입력)를 입력한다. ~/test는 home에 있는 test파일을 의미한다. window에서 home은 사용자 폴더가 된다. 사용자명과 비밀번호는 건드리지 않고 [연결] 버튼을 누른다. 그러면 해당 폴더에 위와 같은 파일이 생성된다. 아래와같이 H2 Database에 연결이되며, ..

image