728x90
  • EJB : 무겁고 느림, 개발의 복잡성, 호환이 안됨

  • Spring이 EJB를 대체하기 위해 나옴

 

-Spring 장점

 

  1. 경량 컨테이너 - 객체의 라이프 사이클 관리, JEE 구현을 위한 다양한 API제공

  2. DI(Dependency Injection) 지원

  3. AOP(Aspect Oriented Programming) 지원

  4. POJO(Plain Old Java Object) 지원

  5. JDBC를 위한 다양한 API지원

  6. Transaction처리를 위한 일관된 방법 제공

  7. 다양한 API와의 연동 지원

 

 

압축풀고 sql3.3 bundle -> sts실행 -> workspace (스프링 폴더 지정) -> Severs 지우기 -> editors - text editors (show editors check해주가) -> new -> spring legacy project -> mvc repository홈페이지에서 4.3.2 다운

 

-Maven project : build tool -> 컴파일, 실행, 배포 등의 빌드를 효과적으로 하기 위한 툴 = maven(라이브러리 관리에 효과적), gradle

 

C:\Users\kosta\.m2\repository 이 레퍼지토리에서 충돌이 일어남 -> 전체삭제 -> sts 재시작(reload)

 

pom.xml에서 <dependencty>다지우고 mvn repository홈페이지에서 4.3.2다운받은 dependency 넣기, 본래 있던 jre-repository지우고 현재 1.8.0으로 다시 만들기

 

src/main/resources -> new -> spring bean configuration file(xml파일 하나만들기)

 

xml : 순수하게 데이터를 전달하기 위한 용도 <book> - 마크업 언어 -> ajax와 함께 이기종간의 데이터를 전달하기 위한 용도, 주문서(요구할 것)

 

DTD -> 스키마 -> Xsd(문서포맷을 결정짓는 애) 덕분에 bean태그를 쓸 수 있음. 스키마가 정의되어 있어야 함

 

Namespaces -> 스키마 추가용도(context 추가)

 

 

*DI관련 주요 클래스

  • Spring Container(주방장) : 객체를 관리하는 컨테이너 (xml내용 읽어옴), 서비스객체DAO객체를 가짐

 

 

-의존성 주입(Dependency Injection, DI) : 제어의 역행, 느슨한 결합(변화에 유연한 대처)

  1. 명시적 : 직접적인 xml 연결, 자동적 : 데이터타입 기준으로 객체를 찾아옴(constructor방식, property방식)<constructor-arg ref="oracleDao"/>, <property name="dao" ref="mySQLDao"/>

**property방식 -getset메소드

  Construtor방식- 생성자사용

  1. 자동으로 : 자바 configuration - method단위 (자동으로 객체들끼리 의존관계가 설정되도록 연결해줌)

        @Autowired

         public void setDao(Dao dao) {

                 this.dao = dao;

         }

 

 

객체를 줄 때는 <ref> "bean 이름", <value> "값"

bean태그로 객체생성 dao& service객체 -> container로 들어감 -> 

 

applicationContext.xml = 객체간의 의존관계를 연결해줌

 

<context:component-scan base-package="kosta.di"/>kosta.di 안의 다음과 같은 것들을 annotation해주면 연결해줌

@Controller -> MVC : Controller클래스

@Service -> Service객체

@Repository -> Dao객체

@Component ->기타 객체

 

        @Autowired

         public void setDao(Dao dao) {

                 this.dao = dao;

         }

 

** dao 자동으로 주입시키기

2개의 dao객체에 @repository를 설정해주었을 때 오류뜸

expected single matching bean but found 2: mySQLDao,oracleDao (아래 두 어노테이션은 멤버변수 위에다 써줘도 됨)

         @Autowired

         @Qualifier("oracleDao"

         public void setDao(Dao dao) {

                 this.dao = dao;

         }

** service 자동으로 주입시키기

@org.springframework.stereotype.Service

Service service = (Service)factory.getBean("writeService");

 

  1. 자바설정파일

  2. xml

 

 

 

 

***오늘의 정리

    DI -> container(객체 생성, 의존관계)

           ->설정파일 : xml, java

  1. 명시적 <bean id="객체이름" class="생성클래스"/>

        <constructor-arg ref="생성자"/>

        <property/ name="dao" ref="생성자"> ref=객체, value=문자열

  1. 자동 뭉터기로<context:annotation-config/>

        <context:component-scan base-package="패키지이름"/>

            @Controller -> MVC : Controller클래스

            @Service -> Service객체

            @Repository -> Dao객체

            @Component ->기타 객체

 

            @autowired || @inject

            @qualifier

  1. Java File

        @Bean

            return new 객체

        

 

728x90

+ Recent posts