전체 글
-
[Spring] 싱글톤 패턴과 싱글톤 컨테이너인프런 - 스프링/핵심 원리 2023. 7. 19. 16:19
- 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 예제 코드 - 싱글톤 패턴을 구현하는 방법은 여러가지가 있지만 위의 방법은 객체를 미리 생성해두는 가장 단순하고 안전한 방법을 사용했다. - 예를 들어, 사용하는 시점에 객체가 생성되어 있지 않으면 생성하는 방법도 있다.(지연하여 처리하는 방법) 싱글톤 패턴 문제점 - 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다. - 의존관계상 클라이언트가 구체 클래스에 의존한다. --> DIP를 위반한다. - 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다. - 테스트하기 어렵다. - 내부 속성을 변경하거나 초기화하기 어렵다. - private 생성자로 자식 클래스를 만들기 어렵다. - 결론적으로 유연성이 떨어진다...
-
[Spring] 웹 애플리케이션과 싱글톤인프런 - 스프링/핵심 원리 2023. 7. 19. 15:40
- 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. - 싱글톤이 아니라면 요청이 올때마다 객체를 생성하게 되는 문제점이 있다. 예를 들어, 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸되어 메모리 낭비가 심하게 된다. - 해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다. --> 싱글톤 패턴 출처: 인프런 김영한님의 스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢 www.inflearn.com
-
[Spring] 스프링 컨테이너와 스프링 빈인프런 - 스프링/핵심 원리 2023. 7. 18. 02:04
스프링 컨테이너와 스프링 빈 - ApplicationContext를 스프링 컨테이너라 한다. 더 정확히는 스프링 컨테이너를 부를 때 BeanFactory, ApplicationContext로 구분해서 이야기한다. - 스프링 컨테이너에서 관리하는 객체를 빈이라고 한다. 빈 조회 예시 코드 public class MemberApp { public static void main(String[] args) { ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationContext.getBean("memberService", ..
-
[Spring] IoC, DI, 컨테이너인프런 - 스프링/핵심 원리 2023. 7. 18. 01:35
제어의 역전(Inversion of Control) - 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. Public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); } - 반면에 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당하고 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. Public class AppConfig { public MemberRepositor..
-
[Java] 인텔리제이 단축키 모음개발 지식/Java 2023. 7. 2. 18:58
윈도우 기준 일단 자주 쓰는 것들만 모아둠 1. Ctrl + Shift + Enter : 세미콜론, 중괄호 등의 자동완성 기능 2. Ctrl + Alt + v : 리턴타입 변수명 자동생성 기능 3. Ctrl + Alt + 방향키(왼쪽, 오른쪽) : 이전의 마우스 커서 위치로 이동 4. Ctrl + 좌클릭 : 해당 클래스로 이동 5. Ctrl + Shift + 방향키(위, 아래) : 해당 위 아래 라인의 코드 위치 서로 변경 6. Ctrl + Shift + Alt + t : Refactor this 옵션 창 제공 7. Ctrl + Alt + n : inline variable 적용 추가사항 앞으로 지속적으로 업데이트 하기!
-
[Spring Data JPA] JPA Auditing 기능코드스테이츠/스프링 2023. 6. 22. 16:49
JPA Auditing이란? - Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통되는 필드나 컬럼이 존재한다. - 대표적으로 생성일자, 수정일자, 식별자 등 - Audit는 감시하다 라는 뜻으로 Spring Data JPA에서 시간에 대해 자동으로 값을 넣어주는 기능이다. Audit 사용 예제 코드 - @MappedSuperclass 는 JPA Entity 클래스들이 해당 추상 클래스를 상속할 경우 createdAt, modifiedAt을 컬럼으로 인식하게 하는 역할을 한다. - @EntityListeners(AuditingEntityListener.class)는 해당 클래스에 Auditing 기능을 포함한다는 의미이다. - @CreatedDate는 Ent..
-
[Java] static, final 키워드를 class에 사용하는 경우개발 지식/Java 2023. 6. 18. 18:27
1. final - final 키워드를 class에 사용하는 경우에 해당 클래스는 더이상 상속을 통한 확장이 불가능하게 된다. 2. static - static 키워드의 경우 외부 클래스에는 사용이 불가능하며 내부 클래스에서 사용할 수 있다. - static 중첩 클래스의 경우 외부 클래스 생성없이 직접 객체를 생성할 수 있다. - static 중첩 클래스의 장점으로는 외부 클래스와 연관된 클래스들을 내부에 grouping 할 수 있다. 3. static final - static 중첩 클래스와 같이 외부 클래스 생성없이 직접 객체를 생성할 수 있으며 해당 클래스는 더이상 상속이 불가능하게 된다.
-
[Java] static, final, static final의 차이개발 지식/Java 2023. 6. 18. 17:11
1. static - 객체 생성 없이 필드와 메서드를 사용하고자 할 때 - 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드 선언 시 - 정적 메서드는 객체 생성 없이 바로 사용할 수 있는 특징 때문에 인스턴스 필드나 메서드, 그리고 this 키워드를 사용할 수 없다. 2. final - 수정이 불가능하다는 의미 - final 필드에 값을 저장하는 방법에는 두 가지가 있다. public class Shop { final int closeTime = 21; final int openTime; public Shop(int openTime) { this.openTime = openTime; } } - 선언과 동시에 할당하는 법과 생성자를 통해 주입하는 방법이 있다. - 생성자를 통해 주입하는 방법..