상세 컨텐츠

본문 제목

스프링 어노테이션 공부 @Component ,@Service , @Controller

관리X 과거글

by 까먹기전에 2015. 6. 18. 12:14

본문

반응형


@Component 외에 @Service 와 @Controller을 찾아봤더니


@Component가 있다


//////////////////////service///////////////////

package org.springframework.stereotype;


import java.lang.annotation.Annotation;

import java.lang.annotation.Documented;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;


@Target({java.lang.annotation.ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Component

public @interface Service

{

  public abstract String value();

}

//////////////////////controller/////////////////////////////

package org.springframework.stereotype;


import java.lang.annotation.Annotation;

import java.lang.annotation.Documented;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;


@Target({java.lang.annotation.ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Component

public @interface Controller

{

  public abstract String value();

}


//////////////////////////////////////////////////////

@Component 어노테이션을 클래스 적용하면?



<context:component-scan> 태그를 이용해서

스프링이 클래스를 검색할 패키지를 지정함

*스캔의 범위 지정

context:include|exclude type="regex"|"aspectj"|"anotaion"|"assignable"

regex" 클래스이름이 정규표현식에 매칭되는지

expression = kr\.co\.gee.*;


"aspectj" AspectJ의 표현식에 매칭되는지

expression = kr,co..Service.*


"anotaion" 클래스에 지정한 어노테이션이름이 매칭되는지

expression = kr,co.gee.Service.?Annotaion


"assignable" 클래스가 지정한타입이 매칭되는지

expression = kr,co.gee.Service.?Class


<context:component-scan> 태그가

@Component , @Required , @Autowired 이 함께 적용됨




그래서 검색된 클래스를 bean으로 등록할때 클래스의

이름의 첫자를 소문자로 바꾸고 사용한다


Gee->gee


이게 싫다면 @Component("Gee") 라고 써준다



스프링의 빈 범위는 default값은 singleton 이다

@Scope를 이용해 범위 변경가능




출처 : Smile virus .. http://joke00.tistory.com/162




관련글 더보기