YJ의 새벽

Spring. 본문

Spring/Spring

Spring.

YJDawn 2023. 2. 13. 18:17

 

 

 

 

 

  • 스프링의 두가지 특성 !!

-- DI ( Dependency Injection , 의존성 주입 )    

   -- 객체지향 프로그래밍에서

        '다른객체를 사용한다' --> '다른 객체의 기능에 의존한다

    -- 외객체의 의존주입을 관리해주는것이 ' 컨테이너 ' 이다.

    -- 이를 개발자가 직접 제어않고 컨테이너가 한다는점에서

       ' 제어의 역전 ' 이라고 한다 .

 

 

 

 

 

 

 

정적 컨텐츠 -- 서버에서 파일을 웹브라우저에 그냥 내려주는것.

 

MVC와 템플릿 엔진 -- JSP 같은것을 말하며, HTML을 서버에서 프로그래밍을 하여 동적으로 바꾸어주는것.

                                   Model, View, Controller

 API  -- 데이터 구조 포맷으로 클라이언트에게 데이터를 전달하는것. ( 뷰, 리엑트 ). 

            서버끼리 통신할 때 .

 

 

 

 

 

 

  •  스프링 컨테이너가 생성되는 과정.

 

// 스프링컨테이너 생성

ApplicationContext applicationContext = 
     new AnnotationConfigApplicationContext ( AppConfig.class );

--ApplicationContext (인터페이스) 를 스프링 컨테이너라 한다.

 

 

-- 스프링 컨테이너를 생성할때 , 구성정보 ( ex. AppConfig.class) 를 넣어주어야한다.

 

 

-- 파라미너로 넘어온 설정 클래스정보를 사용하여 스프링 빈 등록.

-- Bean 이름은 메서드이름을 사용, 

-- @Bean(name="빈이름 부여 가능") ; 

 

 

 

 

-- 스프링 컨테이너는 설정 정보를 참고하여 의존관계를 주입함.

 

 

 

 

 

 

 

 

 

 

 

 

  • BeanFactory와 ApplicationContext   ( 스프링 컨테이너 )

-- BeanFactory 

 - 스프링 컨테이너의 최상위 인터페이스.

 - 스프링 빈을 관리하고 조회하는 역할.

 - getBean()  을 제공.

 

-- ApplicationContext 

  - BeanFactory 의 기능을 모두 상속받아 사용.

 

 -- MessageSource   

   - 한국에서 들어오면 한국어로 , 영어권에서 들어오면 영어로 출력 . 

 -- EnviromentCapable  ( 환경변수 )

   - 로컬 , 개발 , 운영 등 구분해서 처리 . 

 -- ApplicationEventPublisher  ( 애플리케이션 이벤트 ) 

   - 이벤트를 발행하고 구독하는 모델을 편리하게 지원

 -- ResourceLoader ( 편리한 리소스 조회 )

   - 파일, 클래스패스 , 외부 등에서 리소스를 편리하게 조회

 

 

 

 

 

 

 

 

 --- 스프링 컨테이너는 다양한 형식의 설정 정보를 받을수있게 , 유연하게 설계되어있다.

  ex ) 자바코드 , XML 등등 

 

 

 

 

 

 

 

 

  • 스프링 빈 설정 메타정보  :  BeanDefinition

-- 역할과 구현을 개념적으로 나눈것 !!

 

 

 

 

 

 

 

 

 

 

 

  • 싱글톤 패턴

-- 클래스의 인스턴스가 1개만 생성되는것을 보장하는 디자인 패턴.

-- 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야한다 .

      ( private 생성자를 사용, 외부에서 new 키워드를 사용하지못하도록 해야함 )

-- 스프링컨테이너는 기본적으로 객체를 싱글톤으로 관리해준다 .

 

 

  • 싱글톤 컨테이너

-- 스프링 컨테이너는 싱글턴 패턴을 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리.

-- 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리 라고한다.

-- 싱글톤 패턴의 모든 단점을 해결하면서 객체를 싱글톤으로 유지할수 있다.

 

 

 

 

*** 싱글톤 방식의 주의점

-- 객체 인스턴스를 하나만 생성해서 공유하는 싱글톤방식은 여러 클라이언트가 

    하나의 같은 객체인스턴스를 공유하기때문에 

    싱글톤 객체는 상태를 유지하게 설계하면 안된다!!

-- 무상태로 설계해야한다

   - 특정 클라이언트에 의존적인 필드가 있으면 안된다.

   - 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다.

   - 가급적 읽기만 가능해야한다.

   - 필드 대신에 자바에서 공유되지 않는, 지역변수 파라미터 ThreadLocal 등을 사용해야한다. 

-- 스프링 빈의 필드에 공유 값을 설정하면 큰 장애가 발생할수 있다 !!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

 

 

Comments