>  기사  >  Java  >  Spring에서 일반적으로 사용되는 세 가지 주입 방법

Spring에서 일반적으로 사용되는 세 가지 주입 방법

Guanhui
Guanhui원래의
2020-06-02 11:08:155577검색

Spring에서 일반적으로 사용되는 세 가지 주입 방법

Spring에서 자주 사용되는 세 가지 주입 방법

1. 구성 방법은 반사를 사용하여 구성 방법을 통해 주입을 완료합니다.

먼저 테스트 프로젝트의 구조를 간단히 이해해 보겠습니다. 이는 maven으로 구축되었으며 4개의 패키지로 구성됩니다.

  • entity: 사용자 클래스가 하나만 있는 저장소 엔터티

  • dao: 데이터 액세스, 하나의 인터페이스 , 두 가지 구현 클래스

  • service: 서비스 레이어, 인터페이스, 구현 클래스, 구현 클래스는 IUserDao에 따라 다름

  • test: 테스트 패키지

Spring 구성 파일에 UserService를 등록하고, 다음을 통해 UserDaoJdbc를 주입합니다. constructor-arg 태그 UserService

<!-- 注册userService -->
<bean id="userService" class="com.lyu.spring.service.impl.UserService">
  <constructor-arg ref="userDaoJdbc"></constructor-arg>
</bean>
<!-- 注册jdbc实现的dao -->
<bean id="userDaoJdbc" class="com.lyu.spring.dao.impl.UserDaoJdbc"></bean>

의 매개변수화된 생성자로 매개변수화된 생성자가 하나만 있고 매개변수 유형이 주입된 Bean의 유형과 일치하는 경우 생성자에 주입됩니다.

public class UserService implements IUserService {
  private IUserDao userDao;
  
  public UserService(IUserDao userDao) {
    this.userDao = userDao;
  }
  
  public void loginUser() {
    userDao.loginUser();
  }
}
@Test
public void testDI() {
  ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  // 获取bean对象
  UserService userService = ac.getBean(UserService.class, "userService");
  // 模拟用户登录
  userService.loginUser();
}

테스트 인쇄 결과: jdbc-login 성공적인

참고: 사용자 로그인을 시뮬레이트하는 loginUser 메소드는 실제로 출력 명령문을 인쇄합니다. jdbc에 의해 구현된 클래스의 출력은 다음과 같습니다. mybatis에 의해 구현된 것은 :mybatis-Login 성공입니다.

2. Setter도 Reflection을 사용하는데, 주입은 Setter를 통해서 완료됩니다.

구성 파일은 다음과 같습니다.

<!-- 注册userService -->
<bean id="userService" class="com.lyu.spring.service.impl.UserService">
  <!-- 写法一 -->
  <!-- <property name="UserDao" ref="userDaoMyBatis"></property> -->
  <!-- 写法二 -->
  <property name="userDao" ref="userDaoMyBatis"></property>
</bean>
<!-- 注册mybatis实现的dao -->
<bean id="userDaoMyBatis" class="com.lyu.spring.dao.impl.UserDaoMyBatis"></bean>

참고: 위의 두 가지 작성 방법 모두 허용됩니다. Spring은 이름 값의 각 단어의 첫 글자를 대문자로 변환한 다음 앞에 "set"을 붙여서 형식을 만듭니다. 메소드 이름을 지정한 다음 해당 클래스에서 메소드를 찾아 리플렉션을 통해 호출하여 주입을 수행합니다.

주의하세요: name 속성 값은 클래스의 멤버 변수 이름이나 set 메소드의 매개변수 이름과 관련이 없습니다. 다음 작성 메소드는 성공적으로 실행될 수 있습니다.

한 가지 더 필요한 것이 있습니다. 참고: set 메소드를 통해 속성을 주입하면 스프링은 기본 빈 매개변수 생성자를 통해 객체를 인스턴스화하므로 클래스에 매개변수가 있는 생성자를 작성하는 경우 빈 매개변수 생성자를 작성해야 합니다. 그렇지 않으면 Spring이 객체를 인스턴스화할 수 없어 오류가 발생합니다.

3. 주석을 기준으로 일반적으로 사용되는 주석은 "@Autowried" 및 "@Resource"입니다.

샘플 코드


public class UserService implements IUserService {
  private IUserDao userDao1;
  
  public void setUserDao(IUserDao userDao1) {
    this.userDao1 = userDao1;
  }
  
  public void loginUser() {
    userDao1.loginUser();
  }
}

추천 튜토리얼: "

Java Tutorial"

위 내용은 Spring에서 일반적으로 사용되는 세 가지 주입 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.