당신 이 모 르 는 Spring 자동 주입 상세

4856 단어 spring저절로주입
자동 주입 과@Autowire
@Autowire 는 자동 주입 에 속 하지 않 습 니 다!
주입 방식(중요)
Spring 홈 페이지(문서)에 서 는 Spring 의 주입 방식 이 모두 두 가지 로 정의 되 어 있 습 니 다.set 방법 과 구조 함수 입 니 다.
즉,A 류 에 다른 B 류 를 주입 하고 싶 습 니 다.XML 파일 을 쓰 거나@Autowried 를 통 해 그들 은 결국 이 A 류 의 set 방법 이나 구조 함 수 를 통 해 B 류 를 A 류 에 주입 합 니 다!
다시 말 하면 A 류 에 setB(B b){...}가 없다 면 set 방법 을 통 해 B 류 를 A 류 에 주입 하려 고 하지 마 세 요.
자동 주입
먼저 비교적 전복 적 인 관점 을 제시 합 니 다.@Autowire 는 자동 주입 에 속 하지 않 습 니 다!
자동 주입 을 논의 하려 면 자동 주입 이 무엇 인지,수 동 주입 이 무엇 인지 알 아야 한다.
  • 수 동 주입:Spring 1.x 에 서 는 A 류 에 B 류 를 주입 하려 고 합 니 다.xml 설정 파일 에탭 을 추가 할 수 밖 에 없습니다.즉,우리 가 A 류 에 100 개의 종 류 를 주입 하려 면 100 개의를 반복 해서 써 야 한 다 는 것 이다.그리고 Spring 은 우리 가 글 자 를 적 게 입력 할 수 있 도록@Autowired 주 해 를 제공 합 니 다.이 주 해 를 통 해 우 리 는 필요 한 종 류 를 더욱 쉽게 수 동 으로 주입 할 수 있 습 니 다
  • .
  • 자동 주입:A 류 에 있 으 면 B 류,C 류 등 을 사용 해 야 합 니 다.저 는 100 개의또는 100 개의@Autowired 를 반복 해서 쓸 필요 가 없습니다.어떤 종류 가 필요 한 지 밝 히 기만 하면 된다
  • 자동 이 라면 아무것도 하지 않 아 도 된다 는 뜻 입 니 다.@Autowire 하나 도 추가 하지 않 은 상태 에서 B 류 를 A 류 에 주입 시 키 는 것 이 진정한 자동 주입 입 니 다.
    증명:
    우선,우 리 는 먼저 가장 원시 적 인 xml 를 통 해 주입 류 를 봅 시다.
    
    <bean id="exampleBean" class="examples.ExampleBean">
     <!-- setter injection using the nested ref element -->
     <property name="beanOne">
      <ref bean="anotherExampleBean"/>
     </property>
    </bean>
    
    <bean id="anotherExampleBean" class="examples.AnotherBean"/>
    
    대응 하 는 클래스:
    
    public class ExampleBean {
     private AnotherBean beanOne;
    
     public void setBeanOne(AnotherBean beanOne) {
      this.beanOne = beanOne;
     }
    }
    
    이것 은 Spring 홈 페이지 의 한 예 입 니 다.처음에 우 리 는 XML 에속성 을 추가 하여 클래스 에 필요 한 클래스 를 추가 합 니 다.이런 수 동 주입 방식 은 매우 번 거 로 워 서 뒤에@Autowire 주해 가 나타 나 주입 합 니 다!솔직히 말 하면 사람들 이 게 으 름 을 피 우기 위해@Autowire 주석 으로 한 줄 의 property 속성 을 대체 한 것 입 니 다!(먼저 이렇게 이해 하면 밑바닥 코드 는 틀림없이 이렇게 하지 않 을 것 이다!)그렇다면@Autowire 가 자동 으로 주입 되 었 다 고 할 수 있 습 니까?
    자동 주입 에 대해 서 는 Spring 에서 다음 과 같은 4 가지 방식 을 제공 합 니 다.
    在这里插入图片描述
    먼저 공식 문서 가 제공 하 는 네 가지 방법 에 따라 설명 한다.
  • no:자동 조립 하지 않 는 것
  • by Name:이름 으로 자동 조립
  • by Type:유형 을 통 해 자동 조립
  • constructor:구조 함 수 를 통 해 자동 조립
  • 처음에 저 는 Spring 에서 자동 으로 주입 하 는 방식 은 두 가지 뿐 이 라 고 썼 습 니 다.set()방법 과 구조 함 수 를 통 해.그래서 by Name 과 by Type 은 모두 set()를 통 해 조립 된다.
    코드 데모:by Type 방식 으로 자동 주입<beans>라벨 의 끝 에default-autowire="byType"를 붙 여 Spring 의 자동 주입 을 실현 합 니 다.
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    	  xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"
    		default-autowire="byType">
    
    	<bean id="defaultAutowireService" class="com.spring.autowiringModes.DefaultAutowireService">
    	</bean>
    
    	<bean id="byTypeDemo" class="com.spring.autowiringModes.ByTypeDemo"/>
    
    </beans>
    
    Java 클래스:
    
    public class DefaultAutowireService {
    	ByTypeDemo byTypeDemo;
    
    	public ByTypeDemo getByTypeDemo() {
    		return byTypeDemo;
    	}
    
    	public void setByTypeDemo(ByTypeDemo byTypeDemo) {
    		this.byTypeDemo = byTypeDemo;
    	}
    }
    
    시작 클래스:
    
    public class XmlTest {
    	public static void main(String[] args) {
    
    		ClassPathXmlApplicationContext context =
    				new ClassPathXmlApplicationContext("spring.xml");
    
    		DefaultAutowireService bean =
    				context.getBean("defaultAutowireService", DefaultAutowireService.class);
    
    		System.out.println(bean.getByTypeDemo());
    
    	}
    }
    
    콘 솔:
    在这里插入图片描述
    이때 xml 파일 의default-autowire을 제거 하고 프로그램 을 다시 시작 하고 콘 솔 을 봅 니 다.
    在这里插入图片描述
    종이 위 에서 얻 은 것 은 결국 얕 은 것 이 니,이 일 을 몸소 해 야 한 다 는 것 을 절대 알 아야 한다!여러분 도 직접 코드 를 써 서 다시 한 번 검증 해 주 셨 으 면 좋 겠 습 니 다!
    총결산
    당신 이 모 르 는 Spring 자동 주입 에 관 한 상세 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Spring 자동 주입 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기