일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링 DB연동
- #JSP
- 관점지향 프로그래밍
- srping 데이터베이스연동
- 스프링 마이바티스연동
- 스프링
- JSP-서블릿
- JSP
- #Java
- 스프링 의존성주입
- 스프링 autowired
- 스프링 데이터베이스
- 스프링 팩토리
- #스프링 셋팅
- 스프링 setter
- Spring
- AOP-관점지향 프로그래밍(Aspect Oriented Programming)
- 데이터베이스연동
- AOP-관점지향프로그래밍
- spring mybatis연동
- #데이터 베이스
- 스프링 mybatiis
- #인테리어
- predestory
- 스프링 의존성
- #출처는 페이스북
- 스프링 마이바티스
- 스프링 데이터베이스연동
- 스프링 NamedParameterJDBCTemplate
- 스프링 생성자
- Today
- Total
재미있게 코딩합시다
1.Spring(스프링) -의존성 주입(Dependency Injection, DI) 본문
● 의존성 주입 (Dependency Injection, DI)
• 객체간의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행한다.
• 제어의 역행(inversion of control IoC)라는 의미로 사용되었다.
• Martin Fowler, 2004
- 제어의 어떠한 부분이 반전되는가라는 질문에 '의존 관계 주입'이라는 용어를 사용
- 복잡한 어플리케이션은 비지니스 로직을 수행하기 위해서 두개 이상의 클래스들이 서로 협업을 하면서 구성된다.
-각각의 객체는 협업하고자 하는 객체의 참조를 얻는 것에 책임성이 있다.
-이 부분은 높은 결합도(highly coupling)와 테스트하기 어려운 코드를 양산한다.
• DI를 통해 시스템에 있는 각 객체를 조정하는 외부 개체가 객체들에게 생성시에 의존관계를 주어짐.
- 즉, 의존이 객체로 주입됨.
- 객체가 협업하는 객체의 참조를 어떻게 얻어낼 것인가라는 관점에서 책임성의 역행임.
• 느슨한결합(loose coupling)이 주요 강점
- 객체는 인터페이스에 의한 의존관계만을 알고 있으며, 이 의존관계는 구현 클래스에 대한 차이를 모르는채 서로 다른 구현으로 대체가 가능하다.
Spring의 DI 지원
• Spring Container가 DI 조립기(Assembler)를 제공
– 스프링 설정파일을 통하여 객체간의 의존관계를 설정한 다.
– Spring Container가 제공하는 api를 이용해 객체를 사 용한다.
Spring 설정파일
• Spring Container가 어떻게 일할 지를 설정하는 파일
– Spring container는 설정파일에 설정된 내용을 읽어 Application에서 필요한 기능들을 제공한다.
• XML 기반으로 작성한다.
• Root tag는
• 파일명은 상관없다.
예) applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</bean>
Bean객체 주입 받기 – 설정파일 설정
• 주입 할 객체를 설정파일에 설정한다.
–<bean>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id = "robot" class = "di03.Robot" ></bean>
id에는 식별자
class에는 java파일의 주소를 적어주면된다.
예)
Robot robot = new Robot(); 를 bean에 설정을 한다면
<bean id = "robot" class = "di03.Robot"></bean>
생성자의 이름이 id = " " 로 들어오고
class 의 주소 는 패키지 . java클래스 이름 이렇게 적어주면된다.
•
• <value>
<bean id = "robot" class = "di03.Robot" lazy-init="true" ></bean>
lazy-init = "true" 이 들어가게 된다면.. 해당 bean 객체는 컨테이너 빌드시 생성 안하고 처음으로 getBean요청이 있
을때 생성을한다.
썻을 떄와 안썻을때의 차이점 : 안썻다 ==> 만들어놓고 요청들어올떄 주는것
썻다 ==> getBean 요청이 들어올떄 준다
스프링 컨테이너의 기본 정책 ==>
컨테이너가 빌드 될 때 필요한 모든 Bean객체를 생성, getBean을 계속 해도 만들어져있던 객체를 주기만 한다.
default == singleton(싱글턴)
싱글턴 => 객체를 한번만 생성후 호출될 때 만들어진 호출을 계속 재사용하는것 (계속 생성하지않는다)
but 만약 달라고 할 때마다 새거를 주기를 원한다면...??
scope = "prototype" 을 쓴다.
<bean id = "robot" class = "di03.Robot" scope="prototype" ></bean>
을 추가해주면 된다.
getBean요청마다 새거 만들어서 준다.
property ====> setter에 값을 집어넣는다.
도 추가해주시면 됩니다.
setter가 아닌 생성자를 통해서 객체를 생성할려면>???
객체를 만들어주는 메소드를 팩토리 메소드 == Factory 메소드
'IT > Spring(스프링)' 카테고리의 다른 글
스프링 - mybatis (마이바티스) (0) | 2019.01.07 |
---|---|
4.스프링(Spring)-NamedParameterJDBCTemplate (0) | 2019.01.04 |
3. 스프링(Spring) - 데이터베이스와의 연동 (0) | 2019.01.04 |
2.스프링(Spring)-어노테이션, @postConstruct, @ preDestory (0) | 2019.01.03 |
Spring(스프링) 설정 (0) | 2019.01.02 |