본문 바로가기

웹 프로그래밍/Spring Framework

[Spring Framework] Annotation

Annotation 사용시 Bean.xml에 Context Namespace 필요하다. 따라서 bean -> xmls:context ~ 를 추가해주면된다. 또한 표준 어노테이션을 사용하려면 해당 어노테이션이 정의되어 있는 JAR파일을 불러와야하는데 이 같은 경우 pom.xml ( Maven 기준 ), 에 아래 Dependency를 추가해주면된다.

컴포넌트를 제외한 어노테이션만 쓸 경우 : <context:annotation-config />
컴포넌트를 포함한 어노테이션을 쓸 경우 : <context:component-scan base-package="com.sds.order" />

JSR-330

<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>

JSR-250

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>jsr250-api</artifactId>
    <version>1.0</version>
</dependency>



Annotation

의존성 주입

@Autowired : Spring
@Inject : JSR-330
@Resource : JSR-250

해당 빈이 없으면 Null처리

@Autowired(required = false)
해당 옵션은 Spring에서만 존재

의존성 주입시 주입 대상 지정

@Qualifier("customerRepository") : Spring
@Named("customerRepository") : JSR-330
@Resource(name = "custoemrRepository") : JSR-250, 어노테이션은 존재하지않고 주입시 옵션으로 지정

빈 생성시 및 제거시 호출 메서드 지정 (JSR-250 에서만 ^^)

@PostConstruct
@PreDestroy

필드 값 주입

@Value("testValue") : JSR-330

Util 주입 

@Resource
private Properties properties;

방법 1

<util:properties id="properties">
    <prop key="driverClassName">com.mysql.jdbc.Driver</prop>
    <prop key="url">jdbc:mysql://localhost:3306/order_system</prop>
    <prop key="username">root</prop>
    <prop key="password">1234</prop>
</util:properties> 

방법 2

<util:properties id="properties"  location="classpath:props.properties"></util:properties>

따로 properties를 따로 만들어 주면 된다.

Component Annotation

1. @Component
2. @Service
3. @Repository
4. @Controller