엠마의 개발공부일지

1. 의존성 : 프로그래밍에서 의존관계는 new로 표현된다. 본문

Stack/Spring & Springboot

1. 의존성 : 프로그래밍에서 의존관계는 new로 표현된다.

Emmababy 2020. 10. 31. 19:53
728x90

 

 

"여름나라겨울이야기 블로그"에서 공부한 내용을 정리한다.(코드내용도 블로그발췌)

 

<의존성이란?>

 - Tire인터페이스에 한국, 미국Tire클래스를 만들고, Car클래스에서 의존관계 확인(의존되면서 타 클래스와 엮임)

유연성이 떨어지는코드,
Car생성단계에서 tire의 정보를 모두 알아야함.
 

<의존성 주입코드> : 생성자를 통해 의존성을 주입(생산)

자동차는 어떤 tire를 골라야할지 정하지않아도됨.
어떤 타이어든 들어오기만하면 코드 작동
운전자가 차량을 생성시 타이어도 고른다.
(이 경우 japan tire클래스를만들때 거기서 설정후, 바로 운전자클래스에서 japan tire를 추가해주기만 하면사용가능) 

new Car생성시 생성자파라미터를 쓰고싶으면, 
Car클래스에서 생성자 작성

 

<의존성 주입코드> : 속성(getter, setter) 통해 의존성을 주입(생산)

 

 

<스프링을통한 의존성 주입> : 기존코드 모두동일하며 , main포함한 클래스코드만 변경(구매)

- main을 포함한 클래스에 변경된 사항

📌종합쇼핑몰(Spring)에 대한 정보패키지 import

  •  => import org.springframework.context.ApplicationContext;
  • => import org.springframework.context.support.FileSystemXmlApplicationContext

📌쇼핑몰의 정보 

  • => ApplicationContext context = new FileSystemXmlApplicationContext("/src/main/java/expert002/expert.xml")

📌쇼핑몰에서 구매

  • => Tire tire = (Tire)getBean("tire");  :파라미터가1개일땐 반환형이 object이므로 Tire로 변환
  •  => Car car = (Car)getBean("car");

(이때 getBean에 파라미터가 두개일땐 두번째 인자로 반환형을 지정 ex_getBean("car", Car.class);)

(xml파일의 property부분은 car.setTire(tire)부분을 대체함)

이거 그리신분 천재ㅠㅠ 복받으세요

 

* 스프링사용으로 인한 이점 : 프로그램 실행결과를 바꾸려면 xml파일만 수정하면된다.

* xml파일에서 속성주입하기

  • 형광펜부분은 "코리아타이어를 자동차타이어속성에 결합"하는 부분 
  • <bean>부분은 쇼핑몰에 진열되어있는 내용일뿐 각 클래스와 연결되어있으며,                                             그 클래스에 참조내용이 기록되어있다(@Autowired로 보완가능)

 

 

<@Autowired를 이용한 주입> : feat.작정하고 게을러지기

=> @Autowired : 자동으로 set메서드역할 대신해드림(객체사이의 의존성을 해결해주는 존재)

=> 각 객체클래스의 getter,setter를 안씀 => xml파일에서도 'ref="koreaTire"' 안씀 => 이모든게 @Autowired로 가능 

 

 

 

📌사용방법

1. xml파일에 정보패키지 추가

  • xmlns:context="http://www.springframework.org/schema/context"
  • http://www.springframeworkd.org/schema/context
  • http:/www.springframework.org/schema/context/spring-context-3.1.xsd"
  • <context:annotation-config />

2. 변경 전/후(xml파일)

이로써 @Autowired를 통해 자동으로 car의 property를 찾아주게됨.

 

 

 

 

 

 

[출처: 여름나라겨울이야기 블로그] : expert0226.tistory.com/192?category=479268

728x90

'Stack > Spring & Springboot' 카테고리의 다른 글

mvc 코드작성순서  (0) 2020.11.05
스프링 MVC로 "Hello World"  (0) 2020.11.01
addAttribute관련(Controller)  (0) 2020.10.29
Spring초기설정과정_mybatis  (0) 2020.10.28
Spring_mvc architecture 한장으로 이해하기  (0) 2020.10.27
Comments