이론
톰캣 컨테이너로부터 요청이 왔을때 스프링은 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 |