JAVA를 JAVA라

[JAVA] DI의 개념 본문

JAVA

[JAVA] DI의 개념

샛별KIM 2021. 10. 15. 14:08

======= ERROR
   컴파일 클래스 삭제 : run as - maven clean
   라이브러리 리로딩 : maven - update project
   .m2삭제 재시작



=======DI개념
   container : 객체를 생성, 연결 / 객체 생명주기 관리 / 의존성 이어주기
   DI : 의존성 주입 -> container 에게 위임 -- 
   
   Ioc제어역전 = 의존성 주입을 container에게 위임함

   bean = spring Ioc container에서 생성되고 관리되는 객체

1. xml로 생성하기
   root혹은 servle-context.xml에서
   객체생성은
   <bean class="풀패키지명.클래스명" id="참조변수명" lazy-init="boolean"></bean>
   
객체생성시점 
객체 필요할 때 lazy-init="false"
서버 시작시점 lazt-init="default" / true


   의존성주입
      setter, 생성자로 만들기
      
      setter로 만들기
      <property name="멤버변수명" value="Primitive, String"></property>
      <property name="멤버변수명" ref="참조변수명"></property>

      생성자로 만들기
      <bean class="com.packagename.car.Wheel" id="wheel">
         <constructor-arg name="size" value="p타입, String" />
         <constructor-arg name="company" ref="참조변수명" />
      </bean>

      <constructor-arg index="0" value="17" />
      <constructor-arg index="1" value="hakkook" />index로 할 수 있음

       <constructor-arg type="java.lang.Integer" value="17"/>
       <constructor-arg type="java.lang.String" value="hankook"/>타입으로

2. 어노테이션
   <context:component-scan base-package="com.poseidon.car"/>추가해서 씀

   A. 객체 생성 - 클래스의 선언부 위에 작성
      1) @Controller   : 객체생성, Controller 역활을 부여
      2) @Service       : 객체생성, Service 역활을 부여
      3) @Repository  : 객체생성, DAO(Repository) 역활을 부여
        4) @Component : 객체생성, 그외 나머지   
      
   B. 객체 주입
      @Inject      : 데이터타입으로 찾음, java제공
         @named("")로 객체 선택

      @Autowired   : 데이터타입으로 찾음, 같은 이름으로 Spring에서 제공 ..
         @Quilityfier("")로 객체 선택

      @Resource(name="")   : name으로 검색해서 Inject, xml의 id

'JAVA' 카테고리의 다른 글

[iBatis] iterate, 깨달은 것  (0) 2022.06.23
[JAVA] 이클립스 깃허브 연동?  (0) 2021.10.25
[JAVA] 상속, A extends B  (0) 2021.06.03
Comments