뉴렉처 스프링(15 ~ 17)

김상복·2022년 4월 13일
0

뉴렉처스프링

목록 보기
1/7

15. 어노테이션 @Component

객체를 생성해주는 어노테이션 Component이다
위치는 클래스명 위에다가 작성해주면된다

	@Component("console")
	public class InlineExamConsole implements ExamConsole {

		@Autowired(required = false)
		@Qualifier("exam2")
		private Exam exam;

위의 형식과 같이 @Component를 사용하면 되는데 이때 괄호 안의 문장이 Bean에서 id 역활을 하게 된다.

	ApplicationContext context = new 		
    	ClassPathXmlApplicationContext("spring/di/setting.xml");
	
    ExamConsole console = (ExamConsole)context.getBean("console");
	
	console.print();

Component에서 id를 console로 지정했고 메인에서 console로 해당 클래스를 객체화 시키는 것을 볼 수 있다

Component 어노테이션을 사용할 때 반드시 셋팅해야하는 값

<context:component-scan base-package="spring.di.ui, spring.di.entity"></context:component-scan>

Component 어노테이션을 사용할 때는 반드시 위의 코드를 입력해야한다. Spring이 아무리 편하다지만 어디에 어노테이션을 사용하는지 까지 알지 못한다. 그렇기에 개발자가 어노테이션이 어디에 들어가있는지를 입력해줘야만 한다. component-scan으로 @Component 뿐만 아니라 @Autowired까지 읽어들일 수 있다

16. 어노테이션 @Component의 Value 값 및 세분화

해당 private int kor 같은 변수의 위에 @Value("20") 이런 식으로 값을 넣으면 된다

@Component는 밑의 세가지를 통괄해서 사용할 수 있는 어노테이션이다
1. Controller
2. Repository
3. Service

@Component

  • Spring에서 관리되는 객체임을 표시하기 위해 사용하는 가장 기본적인 annotation이다. 즉, scan-auto-detection과 dependency injection을 사용하기 위해서 사용되는 가장 기본 어노테이션이다.

@Controller

  • Web MVC 코드에 사용되는 어노테이션이다. @RequestMapping 어노테이션을 해당 어노테이션 밑에서만 사용할 수 있다.

@Repository

  • 이것은 Annotation based Configuration, @Repository의 작업은 플랫폼 별 예외를 잡아서 Spring의 통합 검사되지 않은 예외 중 하나로 다시 던지는 것입니다. 이를 위해 PersistenceExceptionTranslationPostProcessor이 제공되며 다음과 같이 Spring의 애플리케이션 컨텍스트에 추가해야합니다.
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
  • 이 빈 포스트 프로세서는 @Repository로 주석이 달린 모든 빈에 권고자를 추가하여 플랫폼 별 예외를 포착 한 다음 Spring의 확인되지 않은 데이터 액세스 예외 중 하나로 다시 발생시킵니다.

@Service

  • 비즈니스 로직이나 respository layer 호출하는 함수에 사용된다. 다른 어노테이션과 다르게 @Component에 추가된 기능은 없다. 하지만 나중에 Spring 측에서 추가적인 exception handling을 해줄 수도 있으니 비즈니스 로직에는 해당 어노테이션을 사용하자.

일반적으로 컴포넌트 클래스들에 @Component를 붙일 수 있지만, @Repository, @Service, @Controller를 붙인다면 도구들이 클래스들을 처리하는데 더 적합하도록 할 수 있고 관점(aspects)에 더 연관성을 부여할 수 있다. - AOP 를 통한 처리가 쉽게 가능하다

17. 어노테이션 @Configuration

원래 xml로 Bean이나 Component scan을 해왔지만 Java 클래스에 어노테이션을 이용해서 스프링 IOC컨테이너에 Bean을 등록할 수 있다

Java 형식의 Configuration 파일

	@ComponentScan("spring.di.ui")
	@Configuration
	public class NewlecDIConfig {

		@Bean
		public Exam exam() {
          return new NewlecExam();
      	}	
	}
    
Xml 형식의 Configuration 파일
<context:component-scan base-package="spring.di.ui, spring.di.entity"/>

<bean id="console" class="spring.di.ui.InlineExamConsole"></bean>

형식으로 xml 파일을 대신할 수 있다

    
profile
초보 개발자

0개의 댓글