70일차_Spring

서창민·2023년 6월 20일
0

Spring

목록 보기
1/15
post-thumbnail

23.06.20 화 70일차

Spring

  • IOC 와 AOP
IOC (제어의 역행)
: 역정의 (new를 호출하는것이 아닌 new를 대입하는 구조)
: 주체가 메인

AOP( 관점지향 프로그래밍)
: 프로그램에 직접적인 사용없이 메소드를 사용해 코드가 실행되게 한다.
: 메인에 추가, 제거를 기반으로 사용, 유지보수에 용이하다.
: 트랜잭션, 머릿말, 꼬리말 등을 사용한다. (편리성 위주)
스프링은 spring legacy project를 사용한다.
스프링부트는 spring start project를 사용한다.
프레임 워크
: 뼈대 혹은 틀로서 소프트웨어 관점에서 접근하면 아키텍처에 해당하는 골격코드이다.
: 서로 다른 개발자가 작성을 하더라도 각각의 특색보다 통일성과 규칙성을 중요시한다(개발자의 개입을 낮춘다)
  • 스프링 컨테이너
package polymorphism;
import org.springframework.context.support.*;
public class TVUser {
	public static void main(String[] args) {
		//1. 컨테이너를 구동한다
		AbstractApplicationContext factory =
				new GenericXmlApplicationContext("applicationContext.xml");
		
		//2. Spring 컨테이너로부터 필요한 객체를 요청(Lookup) 한다 
        BeanFactory f = new BeanFactory();
		TV tv = (TV) f.getBean(args[0]);
		tv.powerOn();
		tv.volumeUp();
		tv.volumeDown();
		tv.powerOff();
		
		//3. Spring 컨테이너를 종료한다
		factory.close();
	}
}

스프링 컨테이너 중 하나인 GenericXmlApplicationContext 을 사용한 예시이다.
메인 클래스의 소스를 수정하지 않고도 동작하는 TV를 변경할 수 있고, 기존 보다 유지보수가 좋다.

  • 스프링 XML 설정

<import>엘리먼트
분리하여 작성한 설정 파일들을 하나로 통합할때 사용

<bean>엘리먼트 
id와 class속성을 사용한다.  class속성은 필수
정확한 패키지 경로와 클래스 이름을 지정해야한다
의존성
 객체와 객의 결합 관계  하나의 객체에서 다른 객체의 변수나 메소드를 이용해야만 한다면 사용하려는 객체에 대한 객체 생성과 생성된 객체의 레퍼런스 정보를 알아야한다.
 
 
인젝션 이용하기

생성자
<Bean>등록 설정에서 시작태그와 종료태그 사이에 <constructor-arg> 엘리먼트를 추가해야 한다.

<constructor-arg> 엘리먼트
ref와 value 속성을 사용하여 생성자 매개변수로 전달할 값을 지정할 수 있다.

Setter
<Bean>등록 설정에서 시작태그와 종료태그 사이에 <property> 엘리먼트를 추가해야 한다.

<property> 엘리먼트
 name 속성값이 호출하고자 하는 메소드 이름이된다.
 Setter메소드를 호출하면서 다른 <bean>객체를 인자로 넘기려면 ref, value 속성을 사용해야한다.
 
p 네임스페이스
setter 인젝션을 사용할때 좀더 효율성으로 의존성을 주입처리하는 방법
p: 변수명-ref="참조할 객체의 이름이나 아이디" 
p: 변수명 = "설정할 값"
을 기본으로 사용한다.
profile
Back-end Developer Preparation Students

0개의 댓글