이론


톰캣 컨테이너로부터 요청이 왔을때 스프링은 DI하여 한번에 수행


포트번호 오류시 

Servers -> server.xml에서 63번 라인 port="80" URIEncoding ="EUC-KR" 으로 수정


액션팩토리-오브잭트팩토리패턴적용 요청에따른 모델생성관리 컨트롤러에게 보고



DI (Dependency Injection)

● DI는 스프링 컨테이너가 지원하는 핵심 개념 중의 하나다.

DI는 객체 사이의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행한다는 개념이다.

● 스프링은 설정 파일이나 어노테이션을 이용하여 객체 간의 의존 관계를 손쉽게 설정할 수 있다.

■ 의존성(Dependency)

∎ 비즈니스 로직을 수행하기 위해서는 둘 이상의 클래스가 사용되는데, 각 객체는 협업할 객체의 참조를 취득해야할 책임이 있는데, 이것이 의존성이다. 

∎ 객체간의 결합도가 높으면 테스트하기 어려운 코드가 만들어진다.

■ 의존성 주입 : 객체들은 객체의 생성 시점에 spring container로부터 의존성을 부여 받게 된다. 즉, 의존하는 객체를 주입받게 된다.


■ 빈 묶기(Bean Wiring)

스프링 컨테이너에서 각 객체간의 의존관계는 xml 파일을 통해서명시할 수 있다. 객체간의 의존 관계는 생성자와 setter 메소드 방식의 두가지 방식으로 지정할 수 있다. 

값을 추가 시킬수 있는 방법은 기본 2가지 setter,생성자


제어역행(IoC : Inversion of Control)

각 객체는 협업할 객체의 참조를 취득해야하는 책임이 있는데, 제어역행은 의존하는 객체를 역행적으로 취득하는 것이다. IoC는 한 객체가 의존성을 가지는 다른 객체의 참조를 취득하는 방법에 대한 책임의 역행이라는 의미를 가지고 있다. IoC를 적용하면 객체들은 어떤 존재에 의해 객체를 생성할 때 의존성을 가지는 객체를 주입받게 된다.



spring 컨테이너 : 스프링은 객체를 관리하는 컨테이너를 제공한다.(스프링 컨테이너는 객체를 생성, 저장, 관리한다.)

spring은 BeanFactory와 ApplicationContext 인터페이스를 구현한 컨테이너를 제공한다.


■ applicationContext.xml

∎ 스프링에서는 컨테이너에 저장될 Bean객체와 각 Bean객체간의 연관관계를 xml 파일을 통해서 설정한다. 

∎ <bean> 태그는 스프링 컨테이너 안에서 생성해야 하는 자바 빈을 정의한다.

 빈 추가: 빈을 위한 기본 설정에는 빈의 id와 클래스 전체 경로를 설정한다.

id 속성은 생성된 객체를 구분하는 식별값으로 사용되면, id 속성 대신 name 속성을 사용할 수도 있다.


∎ 프로토타입과 싱글톤

스프링의 모든 빈은 기본적으로 싱글톤이다. 컨테이너가 배포하는 빈은 항상 동일한 인스턴스를 반환한다. 컨테이너로부터 매번 새로운 인스턴스를 제공받으려면 <bean>태그의 singleton속성을 false로 혹은 scope속성을 prototype로 정의한다.



proprerty ==> setter호출

Spring은 외부조립기 역할, 객체들 관계를 맞추어 주는 역할...

스프링컨테이너는 싱글톤 레지스터리가 있어서 빈으로 등록하는 모든 객체를 싱글톤레지스터리에 등록 해놓고 사용한다.

di 시킬 대상을 적용해서 주입시킬때 ref= 속성을 을 사용한다.

생성자의 특징 : Spring에서는 생성자 오버로딩 문제일때 기본 빈의 주입 형식이 String이다.

 생성자 오버로딩일 경우 생성자의 자료형을 명시 해줘야 한다.



@Autowired 어노테이션을 이용한 자동 설정

◦ @Autowired 어노테이션은 의존 관계를 자동으로 설정할 때 사용되며 생성자, 필드, 메서드 세 곳에 적용가능하다.

◦ @Autowired 어노테이션은 해당 타입의 빈 객체가 존재하지 않거나 2개 이상 존재하는 경우 예외를 발생한다.


byName : property와 같은 이름의 빈을 찾아서 묶어준다.

byType : property와 같은 타입의 빈을 찾아서 묶어준다.

1.모든 빈을 검색한다.

2.같은 타입의 빈이 오면 혼돈을 일으키기 때문에 수식어 지정!


@Qualifier 어노테이션을 이용한 자동 설정 제한

◦ @Qualifier 어노테이션을 이용하여 동일한 빈 객체들 중에서 특정 빈을 사용하도록 설정할 수 있다.

◦ @Qualifier 어노테이션은 자동 연결할 빈 객체의 수식어 값을 가진다.

빈 객체들 중에서 <qualifier> 태그의 값이 @Qualifier 어노테이션의 수식어 값과 일치하는 빈을 자동 설정한다. 



빈의 초기화와 소멸

∙ 스프링은 빈의 구성과 해제를 위한 생명주기 메소드를 제공

∙ init-method는 빈이 객체화되는 즉시 호출될 메소드 정의

∙ destroy-method는 빈이 컨테이너로부터 제거되기 직전에 호출될 메소드를 정의


생성자 호출

 init 호출 

------------------------ 

printMsg 호출

빈의 라이프 사이클 테스트(str)

destroy 호출




실습


src.ex1.Ex1_MessageApp.java

src.ex1.Exam_Todate.java

src.ex1.Myprofile.java

src.ex1.ex1.xml

src.ex1.mypro.xml

ex1_di.jsp

원소스가 제대로 안올라가서 올리지 않음.

ex1_di2.jsp

myprofile.jsp

src.exam.Exam_DI.java

src.exam.exam_di.xml

exam_di.jsp

src.ex2.Ex2_Resource.java

src.ex2.Ex2_Message.java

src.ex2.ex2_di.xml

ex2_di.jsp

src.ex3.Ex3_Service.java

src.ex3.Ex3_ServiceImple.java

src.ex3.ex3_const.xml

ex3_const.jsp

src.ex5.ChinaOrder.java

src.ex5.IndoOrder.java

src.ex5.KorOrder.java

src.ex5.MenuInter.java

src.ex5.OrderSystem.java

src.ex5.ex5_menu.xml

orderForm.jsp

orderProcess.jsp

src.ex6.Ex6_AutoWired.java

src.ex6.ex6_auto.xml

src.ex6.Ex7_Resource.java

src.ex6.ex7_res.xml

src.ex6.Ex8_LifeCycle.java

src.ex6.Ex8_Main.java

src.ex6.ex8_life.xml

ex6_auto1.jsp

ex7_auto.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13
학원 22일차 복습(4/12)  (0) 2018.04.12
학원 21일차 복습(4/11)  (0) 2018.04.11
학원 20일차 복습(4/10)  (0) 2018.04.10

+ Recent posts