@Autowired와 @Resource의 차이점


1. @Autowired : 타입(클래스)과 한정자로 빈 지정(생성자/필드/메서드에 모두 적용 가능)

2. @Resource : 이름으로 빈 지정(생성자에는 적용 불가, 필드나 메서드에만 적용 가능)

- name 속성을 생략하면 @Resource 어노테이션이 적용된 필드나 설정 메서드의 타입을 사용한다.




예제) @Resource를 사용하는 예제


1) @Resource를 사용하는 클래스


package spring.anno.ch04;


import javax.annotation.Resource;


public class HomeController {

private Number num1;

@Resource(name="num2") 

private Number num2;

@Resource(name="num1") // 설정파일 직접 지정하여 가져옴

public void setNum1(Number num1){

this.num1 = num1;

}

public void display(){

System.out.println("num1 : "+num1);

System.out.println("num2 : "+num2);

}

}



2) Number 클래스

package spring.anno.ch04;


public class Number {

private int number;

public void setNumber(int number){

this.number = number;

}


@Override

public String toString() {

return "[number="+number+"]";

}

}



3) 실행 클래스

package spring.anno.ch04;


import org.springframework.context.support.AbstractApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Main {

public static void main(String[] args) {

AbstractApplicationContext factory = 

new ClassPathXmlApplicationContext("applicationContext.xml");

factory.registerShutdownHook();


HomeController homeController = 

factory.getBean("homeController", HomeController.class);

homeController.display();


factory.close();

}

}




4) 설정 파일


<?xml version="1.0" encoding="UTF-8"?>

<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"

xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">


<!-- spring.anno.ch04 -->

<bean id="homeController" class="spring.anno.ch04.HomeController" />

<bean id="num1" class="spring.anno.ch04.Number" p:number="10" />

<bean id="num2" class="spring.anno.ch04.Number" p:number="20" />

</beans>













Posted by netyhobby
,