spring如何實現依賴註入DI(spring-test方式)
spring依賴註入DI
1、創建一個maven項目
mvn archetype:generate -DarchetypeCatalog=internal
2、修改pom.xml
引入需要的依賴,首先spring-context,還是spring-test,最後還有junit。
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <springframework.version>4.3.7.RELEASE</springframework.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${springframework.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${springframework.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>utf-8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <archive> <manifest> <mainClass>com.xueyoucto.xueyou.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3、添加類Person和Body
package com.xueyou.demo; import org.springframework.stereotype.Component; @Component public class Person { public String getName() { return name; } public void setName(String name) { this.name = name; } private String name; }
package org.xueyou.demo; import org.springframework.stereotype.Component; @Component public class Body { public int getId() { return id; } public void setId(int id) { this.id = id; } private int id; }
4、在配置類App中,添加ComponentScan
需要註意的是,這裡需要指定掃描的包
package com.xueyou.demo; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** * Hello world! */ @Configuration @ComponentScan(basePackages = {"org.xueyou.demo","com.xueyou.demo"}) public class App { public static void main(String[] args) { System.out.println("Hello World!"); } }
5、新建一個測試類
package com.xueyou.demo; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.xueyou.demo.Body; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = App.class) public class Springtest { @Autowired private Body body; @Autowired private Person person; @Test public void testBodyIsNull(){ Assert.assertNotNull(body); } @Test public void testPersonIsNull(){ Assert.assertNotNull(person); } }
6、運行測試類
結果如下:
7、從運行結果中我們能看到
Person類和Student類已經被依賴註入到spring中,spring能夠使用這兩個類瞭。
spring-test依賴無法使用問題
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.7.RELEASE</version> <scope>test</scope> </dependency>
去掉
<scope>test</scope>
好瞭,解決!以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 如何使用Spring-Test對Spring框架進行單元測試
- springBoot Junit測試用例出現@Autowired不生效的解決
- 基於SpringBoot Mock單元測試詳解
- SpringBoot與單元測試JUnit的結合操作
- 圖文教程教你IDEA中的Spring環境搭建+簡單入門