ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] DI Annotation
    back end 2022. 3. 15. 23:55

    DI (dependency injection) 프로젝트 공통 준비

    1. Java Project로 생성한 후 maven project로 변환한다.

    2. pom.xml 에서 dependency를 추가한다. (dependency는 Maven에서 코드를 가져온다.)

    3. package 및 class 생성한다. (+beans.xml, Test.class 추가한다.)

     

     

    DI beans.xml에서 객체 생성

    ex) SprindDI02/com.test01

    <bean id="myTest" class="com.test01.Nic_Name"/>

     

    DI Annotation으로 객체 생성

    ex) SprindDI02/com.test01.anno

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
            
     </beans>

    Spring Core API 1.9 Annotation Config 참고해서 붙인다.

     

    <context:component-scan base-package="com.test01.anno"/>

    com.test01.anno 패키지에 있는 @Component 를 찾아서 객체 생성한다.

    <bean>의 id 속성은 @Component() 의 괄호안에 넣어준다!

     

     

    DI AppConfig class로 객체 생성

    ex) SprindDI02/com.test03

    AppConfig 클래스 위에 @Configuration으로 beans.xml 처럼 동작하도록 한다.

    properties 파일에 value를 집어넣고 AppConfig에서 리소스로 호출한다.

    @Configuration
    @PropertySource("classpath:/com/test03/a.properties")

    + 객체를 만들고자 하는 메서드 위에 Annotation을 입력한다.

    @Bean(name="school")

    리소스에 저장한 value를 저장할 변수가 있는 클래스에 Annotation을 입력한다.

    이때 경로는 AppConfig로 해준다. properties를 AppConfig에서 읽고 있기 때문에.

    @ImportResource("classpath:/com/test03/AppConfig")

    그리고 매칭되는 변수 위에 Annotation을 해준다.

    @Value("${myname}")
    private String name;

     

     

    'back end' 카테고리의 다른 글

    [Spring] MVC  (0) 2022.03.16
    [Spring] AOP  (0) 2022.03.16
    [JSP] EL/JSTL  (0) 2022.03.09
    [MVC] WebScore 프로젝트  (0) 2022.03.09
    [MVC 패턴] DB연동  (0) 2022.03.08
Designed by Tistory.