원본 주소 : https://www.cnblogs.com/bihanghang/p/10023759.html
@ContextConfiguration
이 주석은 일반적으로 @RunWith(SpringJUnit4ClassRunner.class)
의 통합 사용을 테스트하는 데 사용
클래스가 주석을 추가 할 때 @Component
, 그는이 자동으로 빈되고, 당신은 Spring 설정 파일이 구성되어 표시 할 필요가 없습니다. 이 콩은 두 가지 방법으로, 자바와 XML 방식 방법으로 일반적으로 수집. 이러한 콩 수집 할 때 우리가 테스트 클래스에서 사용하고자하는 경우, @Autowired
도입 콩 주석이를 수집 할 때, 단지 추가하려면이 테스트 클래스주고 @ContextConfiguration
우리가 테스트 클래스의 일부를 가져올 빈을 표시하는 주석을.
XML
의 노인에 대한 XML 방법을 살펴 보자 :
<? XML 버전 = "1.0"인코딩 = "UTF-8"?> <콩의 xmlns = "http://www.springframework.org/schema/beans" 의 xmlns :이 xsi = "http://www.w3.org / 2001 / 된 XMLSchema 인스턴스 "의 xmlns : p ="http://www.springframework.org/schema/p " 의 xmlns : 컨텍스트 ="http://www.springframework.org/schema/context " 는 xsi :의 schemaLocation =" http://www.springframework.org/schema/beans HTTP : // www.springframework.org/schema/beans/spring-beans-3.1.xsd HTTP : // www.springframework.org/schema/context HTTP : / / www.springframework.org/schema/context/spring-context-3.1.xsd> <! -自动扫描该包-> <배경 : 성분 스캔베이스 -패키지 = "COM"/> </ 콩>
의이 XML 파일 <context:component-scan base-package="com" />
빈 가방 닷컴에서 레이블이 자동으로 모든 수신을 검색합니다.
여기에서 우리는 테스트를 할 수있을 것입니다.
일반 쓰기 :
@RunWith (. SpringJUnit4ClassRunner 클래스 ) @ContextConfiguration (위치 = { "클래스 경로 * / * XML." }) 공용 클래스 CDPlayerTest { }
@ContextConfiguration
브래킷 locations = {"classpath*:/*.xml"}
, 모든 .xml 파일의 클래스 경로가 방금 만든 XML 파일이 포함됩니다, 그래서 자동으로 다음 수업 시간에 테스트 할 수 있습니다, 당신이 얻을 수있는 빈의 내부를 스캔 포함되어 있습니다 말한다 사용하는 @Autowired
모든 콩을 얻을 수있는 주석 전에 패키지에서 자동 스캔을
classpath和classpath*区别:
-
클래스 경로 : 만 파일을 찾을 수 클래스 경로를 찾습니다.
-
클래스 경로 * : 또한 그것을 찾을 수있는 jar 파일 (클래스 패스)를 포함,뿐만 아니라 클래스 경로가 포함되어 있습니다.
자바
당신은 매우 간단합니다 자바 방법을 사용하는 경우, 우리는 위의이 클래스에 추가 할 필요가, 우리가 대신 XML 파일의 자바 클래스를 만들 수 있으므로 복잡한 XML 문서를 작성하지 않아도 @Configuration
다음, 코멘트 추가 @ComponentScan
열 주석을 자동 스캔, 음이 괄호 안에 물건을 작성하지 않은 경우, 같은 @ ComponentScan 기본 검색 구성 클래스 패키지.
@Configuration @ComponentScan 공공 클래스 CDPlayConfig { }
당신이 그것을 테스트하려는 경우이 시점에서, 당신은 쓸 수 있습니다 :
@RunWith (SpringJUnit4ClassRunner. 등급 ) @ContextConfiguration (클래스 = CDPlayConfig. 등급 ) 공용 클래스 CDPlayerTest { }
XML에 비해,이 방법의 공식 대변인 인 아주 멋진하지 않습니다.
봄 부팅 테스트에서
@RunWith (SpringJUnit4ClassRunner. 클래스 ) @SpringBootTest 공용 클래스 테스트 { }
이 주석 @SpringBootTest SpringBoot가 모두 포함 된 메인 클래스 콩에 도입 것을 의미한다.
이 때 SpringBoot 주요 클래스는 콜렉터 빈으로 사용된다. 위의 유사 CDPlayConfig.
@SpringBootApplication @SpringBootConfiguration @ComponentScan (basePackages = { ". com.bihang *" }) 공용 클래스 CarOrderWebApplication는 확장 SpringBootServletInitializer { @Override가 보호 SpringApplicationBuilder의 구성 (SpringApplicationBuilder 빌더) { 반환 (. CarOrderWebApplication builder.sources 클래스 ); } 공공 정적 무효 메인 (문자열 []에 args) { SpringApplication.run (. CarOrderWebApplication 클래스 , 인수); } }