당신 이 모 르 는 Spring 자동 주입 상세
@Autowire 는 자동 주입 에 속 하지 않 습 니 다!
주입 방식(중요)
Spring 홈 페이지(문서)에 서 는 Spring 의 주입 방식 이 모두 두 가지 로 정의 되 어 있 습 니 다.set 방법 과 구조 함수 입 니 다.
즉,A 류 에 다른 B 류 를 주입 하고 싶 습 니 다.XML 파일 을 쓰 거나@Autowried 를 통 해 그들 은 결국 이 A 류 의 set 방법 이나 구조 함 수 를 통 해 B 류 를 A 류 에 주입 합 니 다!
다시 말 하면 A 류 에 setB(B b){...}가 없다 면 set 방법 을 통 해 B 류 를 A 류 에 주입 하려 고 하지 마 세 요.
자동 주입
먼저 비교적 전복 적 인 관점 을 제시 합 니 다.@Autowire 는 자동 주입 에 속 하지 않 습 니 다!
자동 주입 을 논의 하려 면 자동 주입 이 무엇 인지,수 동 주입 이 무엇 인지 알 아야 한다.
증명:
우선,우 리 는 먼저 가장 원시 적 인 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 에자동 주입 에 대해 서 는 Spring 에서 다음 과 같은 4 가지 방식 을 제공 합 니 다.
먼저 공식 문서 가 제공 하 는 네 가지 방법 에 따라 설명 한다.
코드 데모: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 자동 주입 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.