토마토의 개발일지
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • Development (144)
      • Languege (39)
        • Java & Spring (27)
        • C# & ASP.NET (5)
        • JavaScript (2)
        • Kotlin (5)
      • DB (0)
        • Oracle (0)
      • Study (72)
        • 네트워크 (3)
        • 이펙티브 자바 (41)
        • 우아한 테크 코스 (7)
        • Next Step (3)
        • Certificate (5)
        • Side Proejct (6)
      • Error (18)
        • 개발환경 (10)
        • 트러블슈팅 (6)
      • Algorithm (12)
      • 개발환경 (1)
      • 회고 (2)
  • 홈
  • 태그
  • 방명록
Languege/Java & Spring

[김영한 스프링] 빈 생명주기 콜백

빈 생명주기 콜백 시작 DB 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션이 시작하는 시점에 연결하고, 종료되는 시점에 연결을 종료하는 작업을 하려면 객체의 초기화와 종료 작업이 필요합니다. 이번 강의에서는 스프링에서의 빈 생명주기 콜백을 공부했습니다. 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 스프링 빈 생성 의존관계 주입 초기화 콜백 사용 소멸전 콜백 스프링 종료 초기화 콜백: 빈이생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 객체의 생성과 초기화를 분리하자. 생성자는 필수 파라미터를 받고, 메모리를 할당해서 객체를 생성하는 책임을 가집니다. 반면 초기화는 이렇게 생성된 값들을 이용해 외부 커넥션 연결 등 무거운 동작을 수행합니다. 따라서, 생성자..

2022. 3. 17. 22:45
Languege/Java & Spring

[김영한 스프링] 의존관계 자동주입

다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있습니다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입이 가장 중요하고 많이 쓰임으로 생성자 주입만 기재하겠습니다. 생성자 주입은 말 그대로 생성자를 통해서 주입을 받는 방법입니다. 생성자 주입의 특징 생성자 호출 시점에 딱 1번 호출되는 것이 보장 불변, 필수 의존관계에 사용 생성자 주입의 특징은 생성자가 딱 1개만 있다면 @AutoWired를 생략해도 자동으로 주입됩니다. (스프링 빈에만 해당) 옵션처리 주입할 빈이 없어도 스프링이 동작해야 하는 경우가 있은데 @Autowired만 사용하면 required 옵션의 기본값이 true로 되어있어서 자동 주입 대상이 없으면 오류가 발생합니다. 자동 주입 ..

2022. 3. 16. 16:35
Languege/Java & Spring

[김영한 스프링] 싱글톤 컨테이너

웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 서버에 요청을 보냅니다. 스프링이 없는 순수한 DI 컨테이너에 memberService를 클라이언트 A,B,C가 요청한다고 쳤을 때, DI 컨테이너는 매번 다른 객체를 새롭게 생성하게 됩니다. 하지만 고객 트래픽이 초당 100개 1000개씩 생성된다면 메모리 낭비가 심해질 것 입니다. 이를 해결하기 위해서 gof디자인 패턴에서 나오는 싱글톤(Singleton) 이라는 패턴이 나왔는데, 하나의 static 객체를 메모리에 띄우고 이를 재사용하여 시스템의 효율을 높이는 방법입니다. 싱글톤 패턴의 문제점 순수 자바의 싱글톤 패턴은 아래와 같은 형식으로 사용이 가능합니다. 하지만 이 방법에는 여러가지 문제점이 있습니다. 싱글톤 패턴을 구현하는 ..

2022. 3. 14. 10:59
Languege/Java & Spring

[김영한 스프링] 스프링 컨테이너와 빈

스프링 컨테이너 생성 과정 1.스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext는 스프링 컨테이너라 합니다. 이것은 인터페이스이기 때문에 xml을 기반으로 만들 수도 있고 애노테이션 기반의 자바 설정 클래스로 만들 수 있습니다. AppConfig라는 java 파일을 기반으로 애노테이션 기반의 자바 설정 클래스로 컨테이너를 만들었습니다. 스프링 컨테이너를 부를 때 BeanFactory, ApplicationContext로 구분해서 이야기합니다. 2.스프링 빈 등록 이후 new AnnotationConfigApplicationCon..

2022. 3. 10. 09:45
Languege/Java & Spring

[김영한 스프링] 스프링 핵심 원리 이해

스프링 핵심 원리 이해에서는 예제를 만들고 객체 지향 원리를 적용하는 방식으로 이루어졌습니다. 첫번째로 private final MemberRepository memberRepository = new MemoryMemberRepository(); 라는 순수한 자바코드를 작성하였고 이에 대한 코드는 인터페이스 뿐만 아니라 구현 객체도 의존하여 OCP, DIP 위반의 문제가 발생합니다. 왜냐하면 변경에는 닫혀있어야 하는 OCP와 구체화에 의존하면 안되는 DIP를 위반하기 때문입니다. 이를 해결하기 위해 private final MemberRepository memberRepository = new MemberRepository(); 라는 인터페이스만을 의존하는 코드를 작성하였고 OCP와 DIP는 해결한 것 ..

2022. 3. 8. 11:05
Languege/Java & Spring

[JAVA] 자바 Static

Static은 고정된이라는 의미를 가지고 있다. Static 키워드를 사용한다면 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 말한다. 즉, 수명의 주기가 프로그램과 같아 진다는 것이다. 일반적으로 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 Instance는 Heap 영역에 생성된다. Heap영역의 메모리는 Garbege Collector를 통해서 계속해서 관리된다. 하지만 Static 키워드를 통해 생성이 된다면 Static 영역에 할당된 메모리는 모든 객체가 공유하는 특성을 지니며, 이는 Garbege Collecor를 통해서 관리되는 영역이 아니기 때문에 Static을 자주 사용한다면 시스템 성능이 떨어질 수 있다. Static 변수의 특징 - 즉시 호출 가능..

2022. 3. 5. 14:48
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »

공지사항

  • GitHub & WorkSpace

전체 카테고리

  • Development (144)
    • Languege (39)
      • Java & Spring (27)
      • C# & ASP.NET (5)
      • JavaScript (2)
      • Kotlin (5)
    • DB (0)
      • Oracle (0)
    • Study (72)
      • 네트워크 (3)
      • 이펙티브 자바 (41)
      • 우아한 테크 코스 (7)
      • Next Step (3)
      • Certificate (5)
      • Side Proejct (6)
    • Error (18)
      • 개발환경 (10)
      • 트러블슈팅 (6)
    • Algorithm (12)
    • 개발환경 (1)
    • 회고 (2)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #개발자
  • #스프링
  • #김영한
  • #제네릭
  • #후기
  • #객체지향
  • #Java
  • #saa
  • #이펙티브 자바
  • #TDD
  • #클라우드
  • #kotlin
  • #GCP
  • #spring boot
  • #트러블슈팅
  • #우테코
  • #도메인 주도 개발
  • #AWS
  • #자바
  • #spring
  • #구글 클라우드
  • #코틀린
  • #BOJ
  • #파이썬
  • #백준
  • #effective java
  • #스프링부트
  • #이펙티브자바
  • #김영한 스프링
  • #백엔드
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 토마토의 개발일지 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바