Bean 등록 Annotation
@Component |
컴포넌트를 나타내는 일반적인 스테리오 타입으로 <bean> 태그와 동일한 역할을 함 |
@Repository |
퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스 |
@Service |
서비스 레이어, 비지니스 로직을 가진 클래스 |
@Controller |
프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스 |
- @Repository, @Service, @Controller는 더 특정한 유즈케이승 대한 @Component의 구체화된 형태이다.
Bean 의존관계 주입 Annotation
@Autowired, @Resource annotation은 의존하는 객체를 자동으로 주입해주는 annotation이다.
@Autowired |
정밀한 의존관계 주입이 필요한 경우에 유용. |
@Autowired는 프로퍼티, setter 메서드, 생성자, 일반 메서드에 적용 가능. |
|
의존하는 객체를 주입할 때 주로 Type을 이용 |
|
@Autowired는 <property>, <contructor-arg> 태그와 동일한 역할. |
|
@Resource |
어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용 |
@Resource는 poperty, setter 메서드에 적용 가능 |
|
의존하는 객체를 주입할 때 주로 Name을 이용 | |
@Value |
단순한 값을 주입할 때 사용되는 annotation. |
@Value("Spring")은 <property .. value="Spring" />와 동일한 역할 |
|
@Qualifier |
@Qualifier는 @Autowired annotation과 같이 사용. |
@Autowired는 타입으로 찾아서 주입하므로, 동일 타입의 Bean 객체가 여러 개 존재할 때 특정 Bean을 찾기 위해 사용 |
출처: https://smallgiant.tistory.com/11 [나에게 남기는 지식]
Annotation을 이용한 Bean 등록
Bean 등록 Annotation @Component 컴포넌트를 나타내는 일반적인 스테리오 타입으로 태그와 동일한 역할을 함 @Repository 퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스
smallgiant.tistory.com
xml파일에서 resultMap 쓰는 이유
실제 컬럼명과 bean의 변수명이 일치하지 않을때 맵핑하기 위해 씀.
resultType 과 resultMap 차이점
resultType
- ibatis 에서 resultClass → mybatis 에서 resultType 으로 바뀜
- 클래스명 전체 또는 alias를 입력
즉 매핑하려는 자바 클래스의 전체 경로를 입력함
- 예 : com.test.Student 객체로 쿼리 실행 결과값을 받고자 할 때
<select id="selectTest" resultType="com.test.Student">
...
</select>
- 예 : int 형 객체로 쿼리 실행 결과값을 받을 때
<select id="selectTest" resultType="int">
...
</select>
resultMap
- resultMap 선언 당시 참조로 사용한 이름을 입력
- resultType을 이용하면 자동 매핑되기 때문에 편리하지만 제한이 있으나,
resultMap을 사용하면 개발자가 직접 원하는 POJO 클래스에 매핑 가능
- 예 :
<resultMap id="test" type="com.test.Student">
<result property="name" column="name">
....
</resultMap>
<select id="selectTest" resultMap="test">
...
</select>