Spring bean 의 주해 주입 의@Autowired 원리 및 사용

1.@Autowired
개념:
@Autowired 주석 은 클래스 구성원 변수,방법 및 구조 함 수 를 표시 하여 자동 조립 작업 을 완성 할 수 있 습 니 다.@Autowired 의 사용 을 통 해 set,get 방법 을 제거 합 니 다.
@Autowired 를 사용 하기 전에 bean 에 속성 을 설정 할 때 사용 하 는 것 은?

<property name="   " value="    "/>    
@Autowired 를 사용 한 후,우 리 는 사용 해 야 할 곳 에@Autowired 를 하나만 사용 하면 됩 니 다.
코드 사용:

public interface StudentService {
    public boolean login(String username,String password);
}

@Service
public class StudentServiceImpl implements StudentService {

    @Override
    public boolean login(String username,String password) {
       if("crush".equals(username)&&"123456".equals(password)){
            System.out.println("    ");
            return true;
        }
        return false;
    }
}

@Controller
public class StudentController {
    @Autowired
    private StudentService studentService;
        public void login(){
       boolean crush = studentService.login("crush", "123456");
       if(crush){
           System.out.println("crush"+"    !!!!!");
       }else{
           System.out.println("    ");
       }
    }
}
테스트:

@Test
    public void login(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
        StudentController student = applicationContext.getBean("studentController", StudentController.class);
        student.login();
    }
우 리 는@Autowired 를 사용 한 후에 xml 파일 에 가서 계속 설정 할 필요 가 없습니다.
자세 한 정보:
1.@Autowired 를 사용 하 는 현재 클래스 도 spring 용기 에서 위탁 관리 해 야 합 니 다(@Coponent,@Controller,@Service,@reposcory)
2.Public 와 private 가 수식 하 는 필드 는 자동 으로 주입 할 수 있 습 니 다.
3.기본 적 인 상황 에서@Autowired 주 해 를 사용 하 는 속성 은 반드시 조립 되 어야 합 니 다.용기 에서 이 유형의 bean 주입 을 찾 지 못 하면 오류 가 발생 합 니 다.설치 되 지 않 으 면@Autowired 의 required 속성 을 false 로 설정 할 수 있 습 니 다.
4.@Autowired 는 형식 에 기반 한 주입 입 니 다.현재 유형 속성 이 용기 에 빈 만 있다 면 속성 명 은 제한 되 지 않 지만,일반적으로 이니셜 소문 자 규칙 을 따 르 는 것 을 권장 합 니 다.'
5.현재 속성 유형 이 용기 에 여러 개의 Bean 이 있다 면 속성 명 또는@Qualifier 를 통 해 Bean name 을 지정 해 야 합 니 다.
6.@Autowired 는 XXX[],List 에 전 화 를 걸 수 있 습 니 다.이때 용기 에 있 는 모든 XXX 형식의 bean 을 주입 하고 속성 명 은 제약 이 없 지만@Qualifier 를 통 해 지정 한 beanName 을 주입 하 는 bean 을 지정 할 수 있 습 니 다.속성 명 은 제약 이 없습니다.
7.@Autowired 는 맵에 전 화 를 걸 수 있 습 니 다.이 때 모든 XXX 유형의 bean 이 주 입 됩 니 다.beanName 은 key 이 고 대상 은 value 입 니 다.그러나@Qualifier 를 통 해 지정 한 beanName 을 주입 하 는 bean 을 지정 할 수 있 습 니 다.속성 명 은 제약 이 없습니다.
2.@Service,@Repository,@Controller,@Component
이 몇 개의 주해 의 의 미 는 모두 같은 것 으로 클래스 나 인터페이스 에 쓰 여 있 으 며 스프링 용기 에 자동 으로 등 록 됩 니 다.
1.@Service 는 업무 계층 구성 요 소 를 표시 하 는 데 사 용 됩 니 다.
2.@Controller 는 제어 층 구성 요 소 를 표시 하 는 데 사 용 됩 니 다(예 를 들 어 struts 의 action).
3.@Repository 는 데이터 액세스 구성 요소,즉 DAO 구성 요 소 를 표시 하 는 데 사 용 됩 니 다.
4.@Component 는 구성 요 소 를 가리 키 며 구성 요소 가 분류 하기 어 려 울 때 이 주 해 를 사용 하여 표시 할 수 있 습 니 다.Spring 용기 에 등록 합 니 다.
쓰다

@Service
public class StudentServiceImpl implements StudentService {
}

@Controller
public class StudentController {
}
그 역할 은 application.xml 파일 에 다음 코드 를 쓰 는 것 과 같다.

<bean id="studentServiceImpl" class="com.crush.service.impl.StudentServiceImpl"/>
<bean id="studentController" class="com.crush.controller.StudentController"/>
물론 주 해 를 적용 하려 면 스 캔 패키지 의 코드 를 적 게 추가 해 야 합 니 다.

<!-- com.crush       spring     -->
<context:component-scan base-package="com.crush"/>
3.@Bean
@Bean 은 하나의 방법,어떤 방법 을 명 확 히 지 시 했 습 니까?-bean 을 만 드 는 방법 을 명 확 히 지시 하고 Spring 용기 관리 에 맡 겼 습 니 다.이 를 통 해 우 리 는 왜@Bean 이 방법의 주석 에 놓 여 있 는 지 알 게 되 었 습 니 다.왜냐하면 그것 은 주석 을 받 는 방법 을 명확 하 게 알려 주 었 기 때 문 입 니 다.당신 은 나 에 게 Bean 을 만들어 서 Spring 용기 에 건 네 주 고 나머지 는 상관 하지 마 세 요.
4.@Configuration
@Configuration 은 설정 클래스 를 정의 하 는 데 사 용 됩 니 다.간단 한 설명 만 있 습 니 다.
Spring 은 현재 두 가지 설정 방식 이 있 습 니 다.하 나 는 xml 파일 설정 에 자바 코드 를 추가 하 는 것 입 니 다.이것 은 Spring 이 태 어 났 을 때 부터 있 었 고 다른 하 나 는 자바 코드 를 완전히 사용 하여 설정 하고 작성 한 것 입 니 다.이것 은 Spring 뒤의 버 전에 서 나 온 것 입 니 다.
Spring 3.0,@Configuration 에서 설정 클래스 를 정의 하 는 데 사 용 됩 니 다.xml 설정 파일 이 주 해 된 클래스 내부 에 하나 이상 의@Bean 주 해 를 받 는 방법 이 포함 되 어 있 습 니 다.이 방법 들 은 AnnotationConfigApplication Context 또는 AnnotationConfigWebApplication Context 류 에 의 해 스 캔 되 고 bean 정 의 를 구축 하여 Spring 용 기 를 초기 화 합 니 다.
이런 방식 은 자바 프로그래머 들 의 사랑 을 더욱 받는다.

@Configuration
public class MyConfig {
}
그리고 이런 방식 은 후속 학습 에서 Spring 소스 코드 에서 매우 많이 사용 된다.
5.@Resource
@Resource 의 역할 은@Autowired 에 해당 합 니 다.@Autowired 는 by Type 에 따라 자동 으로 주입 되 고@Resource 는 기본적으로 by Name 에 따라 자동 으로 주입 되 는 것 입 니 다.@리 소스 는 두 가지 속성 이 비교적 중요 합 니 다.name 과 type 으로 나 뉘 는데 Spring 은@리 소스 주해 의 name 속성 을 bean 의 이름 으로 해석 하고 type 속성 은 bean 의 유형 으로 해석 합 니 다.따라서 name 속성 을 사용 하면 by Name 의 자동 주입 정책 을 사용 하고 type 속성 을 사용 할 때 by Type 자동 주입 정책 을 사용 합 니 다.name 도 지정 하지 않 고 type 속성 도 지정 하지 않 으 면 반사 체 제 를 통 해 by Name 자동 주입 정책 을 사용 합 니 다.
@Autowired 와@Resource 의 차이
@Autowired 원리
Spring bean 의 주해 주입 의@Autowired 의 원리 와 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Autowired 원리 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기