Merge pull request #11614 from hkhan/JAVA-8290-split-spring-di-module
[JAVA-8290] Split spring-di module
This commit is contained in:
		
						commit
						a7e7caaadf
					
				
							
								
								
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							| @ -652,6 +652,7 @@ | |||||||
|                 <module>spring-data-rest-querydsl</module> |                 <module>spring-data-rest-querydsl</module> | ||||||
|                 <module>spring-di</module> |                 <module>spring-di</module> | ||||||
|                 <module>spring-di-2</module> |                 <module>spring-di-2</module> | ||||||
|  |                 <module>spring-di-3</module> | ||||||
|                 <module>spring-drools</module> |                 <module>spring-drools</module> | ||||||
| 
 | 
 | ||||||
|                 <module>spring-ejb</module> |                 <module>spring-ejb</module> | ||||||
|  | |||||||
| @ -9,4 +9,6 @@ This module contains articles about dependency injection with Spring | |||||||
| - [Spring – Injecting Collections](https://www.baeldung.com/spring-injecting-collections) | - [Spring – Injecting Collections](https://www.baeldung.com/spring-injecting-collections) | ||||||
| - [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire) | - [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire) | ||||||
| - [Injecting Spring Beans into Unmanaged Objects](https://www.baeldung.com/spring-inject-bean-into-unmanaged-objects) | - [Injecting Spring Beans into Unmanaged Objects](https://www.baeldung.com/spring-inject-bean-into-unmanaged-objects) | ||||||
| - More articles: [[<-- prev]](/spring-di) | - [Constructor Dependency Injection in Spring](https://www.baeldung.com/constructor-injection-in-spring) | ||||||
|  | - [Circular Dependencies in Spring](https://www.baeldung.com/circular-dependencies-in-spring) | ||||||
|  | - More articles: [[<-- prev]](../spring-di)[[more -->]](../spring-di-3) | ||||||
|  | |||||||
| @ -14,37 +14,41 @@ | |||||||
|         <relativePath>../parent-spring-5</relativePath> |         <relativePath>../parent-spring-5</relativePath> | ||||||
|     </parent> |     </parent> | ||||||
| 
 | 
 | ||||||
|  |     <dependencyManagement> | ||||||
|  |         <dependencies> | ||||||
|  |             <dependency> | ||||||
|  |                 <groupId>org.springframework.boot</groupId> | ||||||
|  |                 <artifactId>spring-boot-dependencies</artifactId> | ||||||
|  |                 <version>${spring-boot.version}</version> | ||||||
|  |                 <type>pom</type> | ||||||
|  |                 <scope>import</scope> | ||||||
|  |             </dependency> | ||||||
|  |         </dependencies> | ||||||
|  |     </dependencyManagement> | ||||||
|  | 
 | ||||||
|     <dependencies> |     <dependencies> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework</groupId> |             <groupId>org.springframework.boot</groupId> | ||||||
|             <artifactId>spring-test</artifactId> |             <artifactId>spring-boot-starter-web</artifactId> | ||||||
|             <version>${spring.version}</version> |  | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework.boot</groupId> |             <groupId>org.springframework.boot</groupId> | ||||||
|             <artifactId>spring-boot-starter-data-jpa</artifactId> |             <artifactId>spring-boot-starter-data-jpa</artifactId> | ||||||
|             <version>${spring-boot.version}</version> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework.boot</groupId> |  | ||||||
|             <artifactId>spring-boot-starter-web</artifactId> |  | ||||||
|             <version>${spring-boot.version}</version> |  | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework</groupId> |             <groupId>org.springframework</groupId> | ||||||
|             <artifactId>spring-aspects</artifactId> |             <artifactId>spring-aspects</artifactId> | ||||||
|             <version>${spring.version}</version> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.projectlombok</groupId> |  | ||||||
|             <artifactId>lombok</artifactId> |  | ||||||
|             <version>${lombok.version}</version> |  | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>javax.inject</groupId> |             <groupId>javax.inject</groupId> | ||||||
|             <artifactId>javax.inject</artifactId> |             <artifactId>javax.inject</artifactId> | ||||||
|             <version>${javax.inject.version}</version> |             <version>${javax.inject.version}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  | 
 | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.boot</groupId> | ||||||
|  |             <artifactId>spring-boot-starter-test</artifactId> | ||||||
|  |         </dependency> | ||||||
|     </dependencies> |     </dependencies> | ||||||
| 
 | 
 | ||||||
|     <build> |     <build> | ||||||
| @ -74,7 +78,7 @@ | |||||||
|     </build> |     </build> | ||||||
| 
 | 
 | ||||||
|     <properties> |     <properties> | ||||||
|         <spring-boot.version>2.3.1.RELEASE</spring-boot.version> |         <spring-boot.version>2.6.1</spring-boot.version> | ||||||
|         <aspectj-plugin.version>1.11</aspectj-plugin.version> |         <aspectj-plugin.version>1.11</aspectj-plugin.version> | ||||||
|         <javax.inject.version>1</javax.inject.version> |         <javax.inject.version>1</javax.inject.version> | ||||||
|     </properties> |     </properties> | ||||||
|  | |||||||
| @ -1,11 +1,10 @@ | |||||||
| package com.baeldung.constructordi; | package com.baeldung.constructordi; | ||||||
| 
 | 
 | ||||||
| import org.springframework.context.annotation.Bean; |  | ||||||
| import org.springframework.context.annotation.ComponentScan; |  | ||||||
| import org.springframework.context.annotation.Configuration; |  | ||||||
| 
 |  | ||||||
| import com.baeldung.constructordi.domain.Engine; | import com.baeldung.constructordi.domain.Engine; | ||||||
| import com.baeldung.constructordi.domain.Transmission; | import com.baeldung.constructordi.domain.Transmission; | ||||||
|  | import org.springframework.context.annotation.Bean; | ||||||
|  | import org.springframework.context.annotation.ComponentScan; | ||||||
|  | import org.springframework.context.annotation.Configuration; | ||||||
| 
 | 
 | ||||||
| @Configuration | @Configuration | ||||||
| @ComponentScan("com.baeldung.constructordi") | @ComponentScan("com.baeldung.constructordi") | ||||||
| @ -1,11 +1,10 @@ | |||||||
| package com.baeldung.constructordi; | package com.baeldung.constructordi; | ||||||
| 
 | 
 | ||||||
|  | import com.baeldung.constructordi.domain.Car; | ||||||
| import org.springframework.context.ApplicationContext; | import org.springframework.context.ApplicationContext; | ||||||
| import org.springframework.context.annotation.AnnotationConfigApplicationContext; | import org.springframework.context.annotation.AnnotationConfigApplicationContext; | ||||||
| import org.springframework.context.support.ClassPathXmlApplicationContext; | import org.springframework.context.support.ClassPathXmlApplicationContext; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.constructordi.domain.Car; |  | ||||||
| 
 |  | ||||||
| public class SpringRunner { | public class SpringRunner { | ||||||
|     public static void main(String[] args) { |     public static void main(String[] args) { | ||||||
|         Car toyota = getCarFromXml(); |         Car toyota = getCarFromXml(); | ||||||
| @ -5,8 +5,9 @@ import org.springframework.stereotype.Component; | |||||||
| 
 | 
 | ||||||
| @Component | @Component | ||||||
| public class Car { | public class Car { | ||||||
|     private Engine engine; | 
 | ||||||
|     private Transmission transmission; |     private final Engine engine; | ||||||
|  |     private final Transmission transmission; | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     public Car(Engine engine, Transmission transmission) { |     public Car(Engine engine, Transmission transmission) { | ||||||
| @ -1,8 +1,9 @@ | |||||||
| package com.baeldung.constructordi.domain; | package com.baeldung.constructordi.domain; | ||||||
| 
 | 
 | ||||||
| public class Engine { | public class Engine { | ||||||
|     private String type; | 
 | ||||||
|     private int volume; |     private final String type; | ||||||
|  |     private final int volume; | ||||||
| 
 | 
 | ||||||
|     public Engine(String type, int volume) { |     public Engine(String type, int volume) { | ||||||
|         this.type = type; |         this.type = type; | ||||||
| @ -1,7 +1,8 @@ | |||||||
| package com.baeldung.constructordi.domain; | package com.baeldung.constructordi.domain; | ||||||
| 
 | 
 | ||||||
| public class Transmission { | public class Transmission { | ||||||
| 	private String type; | 
 | ||||||
|  | 	private final String type; | ||||||
| 
 | 
 | ||||||
| 	public Transmission(String type) { | 	public Transmission(String type) { | ||||||
| 		this.type = type; | 		this.type = type; | ||||||
| @ -1,7 +1,6 @@ | |||||||
| package com.baeldung.constructordi; | package com.baeldung.constructordi; | ||||||
| 
 | 
 | ||||||
| import static org.assertj.core.api.Assertions.assertThat; | import com.baeldung.constructordi.domain.Car; | ||||||
| 
 |  | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| import org.junit.runner.RunWith; | import org.junit.runner.RunWith; | ||||||
| import org.springframework.context.ApplicationContext; | import org.springframework.context.ApplicationContext; | ||||||
| @ -11,7 +10,7 @@ import org.springframework.test.context.ContextConfiguration; | |||||||
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | ||||||
| import org.springframework.test.context.support.AnnotationConfigContextLoader; | import org.springframework.test.context.support.AnnotationConfigContextLoader; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.constructordi.domain.Car; | import static org.assertj.core.api.Assertions.assertThat; | ||||||
| 
 | 
 | ||||||
| @RunWith(SpringJUnit4ClassRunner.class) | @RunWith(SpringJUnit4ClassRunner.class) | ||||||
| @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = Config.class) | @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = Config.class) | ||||||
| @ -10,10 +10,12 @@ import static org.junit.Assert.assertEquals; | |||||||
| @RunWith(SpringRunner.class) | @RunWith(SpringRunner.class) | ||||||
| @ContextConfiguration(classes = AspectJConfig.class) | @ContextConfiguration(classes = AspectJConfig.class) | ||||||
| public class PersonUnitTest { | public class PersonUnitTest { | ||||||
|  | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void givenUnmanagedObjects_whenInjectingIdService_thenIdValueIsCorrectlySet() { |     public void givenUnmanagedObjects_whenInjectingIdService_thenIdValueIsCorrectlySet() { | ||||||
|         PersonObject personObject = new PersonObject("Baeldung"); |         PersonObject personObject = new PersonObject("Baeldung"); | ||||||
|         personObject.generateId(); |         personObject.generateId(); | ||||||
|  | 
 | ||||||
|         assertEquals(1, personObject.getId()); |         assertEquals(1, personObject.getId()); | ||||||
|         assertEquals("Baeldung", personObject.getName()); |         assertEquals("Baeldung", personObject.getName()); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								spring-di-3/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								spring-di-3/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | ## Spring Dependency Injection | ||||||
|  | 
 | ||||||
|  | This module contains articles about dependency injection with Spring | ||||||
|  | 
 | ||||||
|  | ### Relevant Articles | ||||||
|  | 
 | ||||||
|  | - [@Lookup Annotation in Spring](https://www.baeldung.com/spring-lookup) | ||||||
|  | - More articles: [[<-- prev]](../spring-di-2) | ||||||
							
								
								
									
										45
									
								
								spring-di-3/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								spring-di-3/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||||
|  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
|  |     <modelVersion>4.0.0</modelVersion> | ||||||
|  |     <artifactId>spring-di-3</artifactId> | ||||||
|  |     <version>1.0-SNAPSHOT</version> | ||||||
|  |     <name>spring-di-3</name> | ||||||
|  | 
 | ||||||
|  |     <parent> | ||||||
|  |         <groupId>com.baeldung</groupId> | ||||||
|  |         <artifactId>parent-spring-5</artifactId> | ||||||
|  |         <version>0.0.1-SNAPSHOT</version> | ||||||
|  |         <relativePath>../parent-spring-5</relativePath> | ||||||
|  |     </parent> | ||||||
|  | 
 | ||||||
|  |     <dependencyManagement> | ||||||
|  |         <dependencies> | ||||||
|  |             <dependency> | ||||||
|  |                 <groupId>org.springframework.boot</groupId> | ||||||
|  |                 <artifactId>spring-boot-dependencies</artifactId> | ||||||
|  |                 <version>${spring-boot.version}</version> | ||||||
|  |                 <type>pom</type> | ||||||
|  |                 <scope>import</scope> | ||||||
|  |             </dependency> | ||||||
|  |         </dependencies> | ||||||
|  |     </dependencyManagement> | ||||||
|  | 
 | ||||||
|  |     <dependencies> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.boot</groupId> | ||||||
|  |             <artifactId>spring-boot-starter-web</artifactId> | ||||||
|  |         </dependency> | ||||||
|  | 
 | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.boot</groupId> | ||||||
|  |             <artifactId>spring-boot-starter-test</artifactId> | ||||||
|  |         </dependency> | ||||||
|  |     </dependencies> | ||||||
|  | 
 | ||||||
|  |     <properties> | ||||||
|  |         <spring-boot.version>2.6.1</spring-boot.version> | ||||||
|  |     </properties> | ||||||
|  | 
 | ||||||
|  | </project> | ||||||
| @ -5,6 +5,5 @@ import org.springframework.context.annotation.Configuration; | |||||||
| 
 | 
 | ||||||
| @Configuration | @Configuration | ||||||
| @ComponentScan(basePackages = "com.baeldung.methodinjections") | @ComponentScan(basePackages = "com.baeldung.methodinjections") | ||||||
| 
 |  | ||||||
| public class AppConfig { | public class AppConfig { | ||||||
| } | } | ||||||
| @ -1,9 +1,9 @@ | |||||||
| package com.baeldung.methodinjections; | package com.baeldung.methodinjections; | ||||||
| 
 | 
 | ||||||
| import java.util.Collection; |  | ||||||
| 
 |  | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
| 
 | 
 | ||||||
|  | import java.util.Collection; | ||||||
|  | 
 | ||||||
| @Component | @Component | ||||||
| public class Grader { | public class Grader { | ||||||
| 
 | 
 | ||||||
| @ -1,13 +1,13 @@ | |||||||
| package com.baeldung.methodinjections; | package com.baeldung.methodinjections; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.Collection; |  | ||||||
| 
 |  | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.beans.factory.config.ConfigurableBeanFactory; | import org.springframework.beans.factory.config.ConfigurableBeanFactory; | ||||||
| import org.springframework.context.annotation.Scope; | import org.springframework.context.annotation.Scope; | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
| 
 | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Collection; | ||||||
|  | 
 | ||||||
| @Component("schoolNotification") | @Component("schoolNotification") | ||||||
| @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) | @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) | ||||||
| public class SchoolNotification { | public class SchoolNotification { | ||||||
| @ -19,7 +19,7 @@ public class SchoolNotification { | |||||||
| 
 | 
 | ||||||
|     public SchoolNotification(String name) { |     public SchoolNotification(String name) { | ||||||
|         this.name = name; |         this.name = name; | ||||||
|         this.marks = new ArrayList<Integer>(); |         this.marks = new ArrayList<>(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public String addMark(Integer mark) { |     public String addMark(Integer mark) { | ||||||
| @ -1,15 +1,15 @@ | |||||||
| package com.baeldung.methodinjections; | package com.baeldung.methodinjections; | ||||||
| 
 | 
 | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.Map; |  | ||||||
| 
 |  | ||||||
| import org.springframework.beans.factory.annotation.Lookup; | import org.springframework.beans.factory.annotation.Lookup; | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
| 
 | 
 | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  | 
 | ||||||
| @Component("studentService") | @Component("studentService") | ||||||
| public abstract class StudentServices { | public abstract class StudentServices { | ||||||
| 
 | 
 | ||||||
|     private Map<String, SchoolNotification> notes = new HashMap<>(); |     private final Map<String, SchoolNotification> notes = new HashMap<>(); | ||||||
| 
 | 
 | ||||||
|     @Lookup |     @Lookup | ||||||
|     protected abstract SchoolNotification getNotification(String name); |     protected abstract SchoolNotification getNotification(String name); | ||||||
							
								
								
									
										1
									
								
								spring-di-3/src/main/resources/application.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								spring-di-3/src/main/resources/application.properties
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | 
 | ||||||
| @ -0,0 +1,42 @@ | |||||||
|  | package com.baeldung.methodinjections; | ||||||
|  | 
 | ||||||
|  | import org.junit.Test; | ||||||
|  | import org.junit.jupiter.api.AfterEach; | ||||||
|  | import org.springframework.context.ConfigurableApplicationContext; | ||||||
|  | import org.springframework.context.annotation.AnnotationConfigApplicationContext; | ||||||
|  | import org.springframework.context.support.ClassPathXmlApplicationContext; | ||||||
|  | 
 | ||||||
|  | import static org.junit.Assert.assertEquals; | ||||||
|  | import static org.junit.Assert.assertNotEquals; | ||||||
|  | 
 | ||||||
|  | public class StudentIntegrationTest { | ||||||
|  | 
 | ||||||
|  |     private ConfigurableApplicationContext context; | ||||||
|  | 
 | ||||||
|  |     @AfterEach | ||||||
|  |     public void tearDown() { | ||||||
|  |         context.close(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void whenLookupMethodCalled_thenNewInstanceReturned() { | ||||||
|  |         context = new AnnotationConfigApplicationContext(AppConfig.class); | ||||||
|  | 
 | ||||||
|  |         Student student1 = context.getBean("studentBean", Student.class); | ||||||
|  |         Student student2 = context.getBean("studentBean", Student.class); | ||||||
|  | 
 | ||||||
|  |         assertEquals(student1, student2); | ||||||
|  |         assertNotEquals(student1.getNotification("Alex"), student2.getNotification("Bethany")); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void whenAbstractGetterMethodInjects_thenNewInstanceReturned() { | ||||||
|  |         context = new ClassPathXmlApplicationContext("beans.xml"); | ||||||
|  | 
 | ||||||
|  |         StudentServices services = context.getBean("studentServices", StudentServices.class); | ||||||
|  | 
 | ||||||
|  |         assertEquals("PASS", services.appendMark("Alex", 76)); | ||||||
|  |         assertEquals("FAIL", services.appendMark("Bethany", 44)); | ||||||
|  |         assertEquals("PASS", services.appendMark("Claire", 96)); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								spring-di-3/src/test/resources/logback-test.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								spring-di-3/src/test/resources/logback-test.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <configuration scan="true" scanPeriod="15 seconds" debug="false"> | ||||||
|  |     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||||||
|  |         <encoder> | ||||||
|  |             <pattern>[%d{ISO8601}]-[%thread] %-5level %logger - %msg%n</pattern> | ||||||
|  |         </encoder> | ||||||
|  |     </appender> | ||||||
|  | 
 | ||||||
|  |     <root level="INFO"> | ||||||
|  |         <appender-ref ref="STDOUT" /> | ||||||
|  |     </root> | ||||||
|  | </configuration> | ||||||
| @ -5,13 +5,10 @@ This module contains articles about dependency injection with Spring | |||||||
| ### Relevant Articles | ### Relevant Articles | ||||||
| 
 | 
 | ||||||
| - [The Spring @Qualifier Annotation](https://www.baeldung.com/spring-qualifier-annotation) | - [The Spring @Qualifier Annotation](https://www.baeldung.com/spring-qualifier-annotation) | ||||||
| - [Constructor Dependency Injection in Spring](https://www.baeldung.com/constructor-injection-in-spring) |  | ||||||
| - [Spring Autowiring of Generic Types](https://www.baeldung.com/spring-autowire-generics) | - [Spring Autowiring of Generic Types](https://www.baeldung.com/spring-autowire-generics) | ||||||
| - [Guice vs Spring – Dependency Injection](https://www.baeldung.com/guice-spring-dependency-injection) | - [Guice vs Spring – Dependency Injection](https://www.baeldung.com/guice-spring-dependency-injection) | ||||||
| - [Injecting Prototype Beans into a Singleton Instance in Spring](https://www.baeldung.com/spring-inject-prototype-bean-into-singleton) | - [Injecting Prototype Beans into a Singleton Instance in Spring](https://www.baeldung.com/spring-inject-prototype-bean-into-singleton) | ||||||
| - [@Lookup Annotation in Spring](https://www.baeldung.com/spring-lookup) |  | ||||||
| - [Controlling Bean Creation Order with @DependsOn Annotation](https://www.baeldung.com/spring-depends-on) | - [Controlling Bean Creation Order with @DependsOn Annotation](https://www.baeldung.com/spring-depends-on) | ||||||
| - [Unsatisfied Dependency in Spring](https://www.baeldung.com/spring-unsatisfied-dependency) | - [Unsatisfied Dependency in Spring](https://www.baeldung.com/spring-unsatisfied-dependency) | ||||||
| - [Circular Dependencies in Spring](https://www.baeldung.com/circular-dependencies-in-spring) |  | ||||||
| - [XML-Based Injection in Spring](https://www.baeldung.com/spring-xml-injection) | - [XML-Based Injection in Spring](https://www.baeldung.com/spring-xml-injection) | ||||||
| - More articles: [[next -->]](/spring-di-2) | - More articles: [[next -->]](../spring-di-2) | ||||||
|  | |||||||
| @ -1,31 +0,0 @@ | |||||||
| package com.baeldung.methodinjections; |  | ||||||
| 
 |  | ||||||
| import org.junit.Assert; |  | ||||||
| import org.junit.Test; |  | ||||||
| import org.springframework.context.annotation.AnnotationConfigApplicationContext; |  | ||||||
| import org.springframework.context.support.ClassPathXmlApplicationContext; |  | ||||||
| 
 |  | ||||||
| public class StudentIntegrationTest { |  | ||||||
| 
 |  | ||||||
|     @Test |  | ||||||
|     public void whenLookupMethodCalled_thenNewInstanceReturned() { |  | ||||||
|         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); |  | ||||||
|         Student student1 = context.getBean("studentBean", Student.class); |  | ||||||
|         Student student2 = context.getBean("studentBean", Student.class); |  | ||||||
| 
 |  | ||||||
|         Assert.assertEquals(student1, student2); |  | ||||||
|         Assert.assertNotEquals(student1.getNotification("Alex"), student2.getNotification("Bethany")); |  | ||||||
|         context.close(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Test |  | ||||||
|     public void whenAbstractGetterMethodInjects_thenNewInstanceReturned() { |  | ||||||
|         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); |  | ||||||
|         StudentServices services = context.getBean("studentServices", StudentServices.class); |  | ||||||
| 
 |  | ||||||
|         Assert.assertEquals("PASS", services.appendMark("Alex", 76)); |  | ||||||
|         Assert.assertEquals("FAIL", services.appendMark("Bethany", 44)); |  | ||||||
|         Assert.assertEquals("PASS", services.appendMark("Claire", 96)); |  | ||||||
|         context.close(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user