ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @Autowired @Resource @Inject
    JAVA 2021. 8. 18. 17:03

    @Autowired @Resource @Inject

      @Autowired @Resource @Inject
    의존 Spring Java Javax
    사용 가능 위치 - 필드
    - 생성자
    - setter
    - 필드
    - 파라미터가 한 개인 setter
    - 필드
    - 생성자
    - setter
    Bean 검색
    우선순위
    타입 -> 이름 이름 -> 타입 타입 -> 이름
    Bean 강제 지정 @Autowired
    @Qualifier("ID")
    @Resource(name="ID") @Inject
    @Named("ID")
    Bean 없을 경 @Autowired(required=false) 처리하면 예외 발생 방지 예외 발생 예외 발생

     

     

    @Inject 와 @Resource는 JSR 에 실려있는 자바 기존의 어노테이션

    @Autowired 는 스프링에서 등장한 어노테이션. 따라서 스프링 이외에서는 사용할 수 없다.

     

    만약 프로젝트를 스프링에서 다른 프레임워크로 바꿀 경우가 있다면

    @Autowired 보다 @Inject 나 @Resource 를 써야한다.

    다만 이 경우는 거의 없다.

     


    @Resource
    private BoardMapper boardMapper //boardMapper 라는 이름으로 연결됨 @Resource(name="")로 이름지정가능
    
    @Autowired
    private BoardMapper boardMapper //BoardMapper 인 타입으로 연결됨
    
    @Inject
    private BoardMapper boardMapper //BoardMapper 인 타입으로 연결됨

    이름?

     

    @Repository("이름지정가능")

    DB와 상호작용하는 Bean 이라고 등록한 것이다.

    이 어노테이션으로 DI(의존성주입)을한다.

    @Mapper

    mapper.xml 과 이름을 매핑시키면

    mapper.xml CRUD 태그의 id 와 메서드의 명이 같을 경우 해당 xml 의 설정을 사용해 DB에 접근할 수 있다.

    //인터페이스
    @Repository("memberMapper")
    @Mapper
    public interface MemberMapper {}

     

     

     

    @Service("이름지정가능")

    @Repository 로 DB 데이터계층의 일을 여기서 사용한다.

     

    @Resource 를 사용해 이름으로 먼저 Bean 항목을 찾고 있는데 (name="") 으로 직접 그 이름을 지정할 수 있다.

    이름은 @Repository("이름") 로 지정되었다.

    @Service("com.example.memboard.service.MemberService")
    public class MemberService {
    	
    	@Resource(name="memberMapper")
    	MemberMapper memberMapper;
    }

     

     

     

    출처 : https://codevang.tistory.com/256

    댓글

Designed by Tistory.