TIL_Java Spring the Modern Way_4

-·2021년 2월 26일
0

Component annotations

IOC Container에서 bean을 관리하려면 어느걸 관리할지 지정해줘야한다.

이 어노테이션이 있는 클래스를 bean인스턴스로 지정해서 관리하는데

여러가지 어노테이션이 있다.

  • @Component

    가장 일반적인 범위

    정확하게 어느 레이어에 속하는지 모를때 씀

  • @Repository

    데이터레이어에서 사용 될 때 어떤형태든지 DB에서 데이터 가져오는것과 연관

    DB에서 데이터를 가져오면 저장, 검색등등 의 행위

    MVC의 Model, ex)DAO, VO

  • @Service

    비즈니스 레이어에서 사용 될 때

  • @Controller

    웹 레이어에서 컨트롤러를 정의할때
    MVC의 컨트롤러

근데 다 똑같은 bean을 생성해주는 기능인데 왜 나눠놨을까?

무슨 차이일까?

AOP를 위해서 나눠놓은 것이다.
AOP가 뭐냐 여기서는 간단하게 설명해보자 나중에 자세하게 나옴
AOP는 로직을 관점 기준으로 모듈화하겠다는 의미이다

예를 들어
@Repository는 데이터베이스에 관한기능 ex) JDBC에 대한 예외처리

이런식으로 spring이 분류하고 처리할수 있게 해놓았다.

이럴때 @Repository말고 @Component 어노테이션을 사용한다면 이러한 기능들은 사용할수없다.

외부에서 값을 정의해서 사용하기

.properties 파일에서 값을 읽어와서 사용하는 방법

src/main/resources 위치에 app.properties 파일을 생성해준다.

external.service.url=http://someserver.dev.com/service

내용은 이렇게

@PropertySource("classpath:app.properties") 이렇게 하면 properties파일을 불러올수가 있다.

classpath: == src/main/resources 같은 의미

bean class 에서

@Value("${external.service.url}")
private String url;

이런식으로 하면 url에 값이 들어간다.

profile
거북이는 오늘도 걷는다

0개의 댓글