11/22 스프링 설치/ IOC -DI, DL

yookyungmin·2022년 11월 22일
0


패키지 설정


Pom.xml = maven과 소통할수 있는 인터페이스, 관리 통로
maven 라이브러리 편리하게, 의존성으로 연결된 라이브러리까지 한번에 관리, 배포자동화
서버 관리할때 war 파일로 export 해서 aws 서버로 전송하는 작업도 maven에서 편리하게 가능
maven -> gradle


target폴더 배포 잘안될시 확인 용도

  1. 프로젝트 기본 셋팅
    pom.xml 5.3.20 적용, 자바 11로 수정, 프로젝트 우클릭 properties - facets java 11적용

Spring Framework

  • IOC : 코드 결합도를 가능한 최소화 하여 유지보수 장점을 살리는 패러다임 < --
    IOC성립을 위해 DL / DI
    제어의 역전 / 인스턴스에 대한 제어건이 개발자가 아닌 스프링에게 있다, 스코프, 사이클, 패턴등을 스프링이 관리
    Inversion Of Control -> IOC , Dependency LooKup -> DL 의존성 검색

  • AOP / INTERCEPTOR : 횡단관심사 및 중간 개입 처리 기법

  • 코드 분량 최소화 / 개발자 편의성 개선

  • 고난도 디자인 패턴 단순화

  • Layer 세분화에 의한 이식성 향상

인터페이스

  • 인터페이스 사용으로 코드 결합도를 최소하여 IOC 성립 / 추가로 팩토리패턴

스프링에서 인스턴스들을 bean이라 한다

getBean시 타입을 object타입으로 꺼내오기 때문에 캐스팅이 필요하다

  • 명시하지 않앗유지보수 효율이 높아짐
	ApplicationContext ctx = new GenericXmlApplicationContext("context.xml"); 
		//스프링 컨테이너, 스프링과 관련된것들을 포함한 컨테이너 / Spring Container 생성
		//context.xml을 읽어서 context.xml안의 bean(인스턴스)들을 new한다
		
		
		TV tv = (SamsungTV)ctx.getBean("tv"); // tv id를 가진 인스턴스를 주라
		//TV tv = ctx.getBean(TV.class); //위와 동일   타입을명시하지 않아서 유지수 편리
        Bean에 접근하기 위해 컨테이너가 제고하는 API를 이용하여 Bean을 Lookup하는것 DL
		tv.on();
		tv.volumeUp();
		tv.off(); 
        
       
<bean id = "tv" class="kh.spring.tools.LgTV" lazy-init="true"> 
lazy-init="true"를 하게 되면 스프링컨테이너가 생성되는 시점에 만들어지지 않고
getBean , DL하면 만들어진다
scope="prototype" 싱글톤 패턴 해제

<constructor-arg ref="speaker"></constructor-arg> 
	di / dependency injection
	LgTV bean을 생성할때 생성자 매개변수로 speaker를 넣어준다 의존성 주입
	speaker 인스턴스를 생성자 매개변수로 주입
    


no qualifying bean of type
-- bean이 없다는 에러

  1. 빈 스코프란?
    빈이 존재할 수 있는 범위, 생성부터 소멸까지의 범위를 가리키는데,
    지금까지 싱글톤 스코프로 학습하였기 때문에, 스프링 컨테이너의 시작과 종료가 동일하게 유지되었었다.빈이 가질 수 있는 다양한 스코프를 배워보자.
    기본 Bean
    싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프
    프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 짧은 범위의 스코프
    웹 Bean
    request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프
    session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프
    application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프

0개의 댓글