Skip to content

Commit aa0baec

Browse files
committed
1 parent 3302266 commit aa0baec

File tree

8 files changed

+246
-0
lines changed

8 files changed

+246
-0
lines changed

spring-core-ioc/pom.xml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,37 @@
2323
<artifactId>spring-context</artifactId>
2424
</dependency>
2525

26+
<!-- JSR 330 -->
27+
<dependency>
28+
<groupId>javax.inject</groupId>
29+
<artifactId>javax.inject</artifactId>
30+
<version>1</version>
31+
</dependency>
32+
33+
<!-- JSR 250 -->
34+
<dependency>
35+
<groupId>javax.annotation</groupId>
36+
<artifactId>javax.annotation-api</artifactId>
37+
</dependency>
38+
2639
<dependency>
2740
<groupId>org.junit.jupiter</groupId>
2841
<artifactId>junit-jupiter-api</artifactId>
42+
<scope>test</scope>
2943
</dependency>
44+
45+
<dependency>
46+
<groupId>org.junit.platform</groupId>
47+
<artifactId>junit-platform-runner</artifactId>
48+
<scope>test</scope>
49+
</dependency>
50+
51+
<dependency>
52+
<groupId>org.springframework</groupId>
53+
<artifactId>spring-test</artifactId>
54+
<scope>test</scope>
55+
</dependency>
56+
3057
</dependencies>
3158

3259

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package basic.ioc.wiring;
2+
3+
import org.springframework.context.annotation.ComponentScan;
4+
import org.springframework.context.annotation.Configuration;
5+
6+
@ComponentScan("basic.ioc.wiring")
7+
@Configuration
8+
public class ConfigWiring {
9+
//extra configs goes here
10+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package basic.ioc.wiring;
2+
3+
public abstract class FileReader {
4+
public void print() {
5+
System.out.println("Inside FileReader");
6+
}
7+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package basic.ioc.wiring;
2+
3+
import org.springframework.stereotype.Component;
4+
5+
@Component
6+
public class PdfFileReader extends FileReader {
7+
8+
@Override
9+
public void print() {
10+
System.out.println("Inside PdfFileReader");
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package basic.ioc.wiring;
2+
3+
import org.springframework.stereotype.Component;
4+
5+
@Component
6+
public class WordFileReader extends FileReader {
7+
8+
@Override
9+
public void print() {
10+
System.out.println("Inside WordFileReader");
11+
}
12+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package basic.ioc.wiring;
2+
3+
import org.junit.Assert;
4+
import org.junit.jupiter.api.Test;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.beans.factory.annotation.Qualifier;
7+
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
8+
9+
@SpringJUnitConfig(ConfigWiring.class)
10+
public class AutowiredTest {
11+
12+
//Inject by Type
13+
@Autowired
14+
private PdfFileReader pdfFileReader;
15+
16+
@Test
17+
public void injectByType() {
18+
Assert.assertNotNull(pdfFileReader);
19+
Assert.assertEquals(pdfFileReader.getClass(), PdfFileReader.class);
20+
}
21+
22+
//Inject by @Qualifier
23+
@Autowired
24+
@Qualifier("wordFileReader")
25+
private FileReader fileReader;
26+
27+
@Test
28+
public void injectByQualifier() {
29+
Assert.assertNotNull(fileReader);
30+
Assert.assertEquals(fileReader.getClass(), WordFileReader.class);
31+
}
32+
33+
//Inject by Field name
34+
@Autowired
35+
private FileReader wordFileReader;
36+
37+
@Test
38+
public void injectByFieldName() {
39+
Assert.assertNotNull(wordFileReader);
40+
Assert.assertEquals(wordFileReader.getClass(), WordFileReader.class);
41+
}
42+
43+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package basic.ioc.wiring;
2+
3+
import org.junit.Assert;
4+
import org.junit.jupiter.api.Test;
5+
import org.springframework.beans.factory.annotation.Qualifier;
6+
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
7+
8+
import javax.inject.Inject;
9+
import javax.inject.Named;
10+
11+
@SpringJUnitConfig(ConfigWiring.class)
12+
public class InjectTest {
13+
14+
//Inject by Type
15+
@Inject
16+
private PdfFileReader fileReader;
17+
18+
@Test
19+
public void injectByType() {
20+
Assert.assertNotNull(fileReader);
21+
Assert.assertEquals(fileReader.getClass(), PdfFileReader.class);
22+
}
23+
24+
//Inject by @Qualifier
25+
@Inject
26+
@Qualifier("wordFileReader")
27+
private FileReader fileReader3;
28+
29+
@Test
30+
public void injectByQualifier() {
31+
Assert.assertNotNull(fileReader3);
32+
Assert.assertEquals(fileReader3.getClass(), WordFileReader.class);
33+
}
34+
35+
//Inject by name with @Named annotation
36+
@Inject
37+
@Named("pdfFileReader")
38+
private FileReader fileReader2;
39+
40+
@Test
41+
public void injectByName() {
42+
Assert.assertNotNull(fileReader2);
43+
Assert.assertEquals(fileReader2.getClass(), PdfFileReader.class);
44+
}
45+
46+
//Inject by field Name
47+
@Inject
48+
private FileReader wordFileReader;
49+
50+
@Test
51+
public void injectByName2() {
52+
Assert.assertNotNull(wordFileReader);
53+
Assert.assertEquals(wordFileReader.getClass(), WordFileReader.class);
54+
}
55+
56+
//Check precedence - Don't do this
57+
//TODO - Uncomment the below line and check what happens
58+
/*@Inject
59+
@Qualifier("pdfFileReader")
60+
@Named("wordFileReader")
61+
private FileReader pdfFileReader;
62+
63+
@Test
64+
public void checkPrecedence() {
65+
Assert.assertNotNull(pdfFileReader);
66+
Assert.assertEquals(pdfFileReader.getClass(), PdfFileReader.class);
67+
}*/
68+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package basic.ioc.wiring;
2+
3+
import org.junit.Assert;
4+
import org.junit.jupiter.api.Test;
5+
import org.springframework.beans.factory.annotation.Qualifier;
6+
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
7+
8+
import javax.annotation.Resource;
9+
10+
@SpringJUnitConfig(ConfigWiring.class)
11+
public class ResourceTest {
12+
13+
//Uncomment and show the exception that gets reproduced
14+
//@Resource
15+
//private FileReader fReader;
16+
17+
//Resolve by property name
18+
@Resource
19+
private FileReader pdfFileReader;
20+
21+
@Test
22+
public void resolveByPropertyName() {
23+
Assert.assertNotNull(pdfFileReader);
24+
Assert.assertEquals(pdfFileReader.getClass(), PdfFileReader.class);
25+
}
26+
27+
//Resolve by explicit name
28+
@Resource(name = "wordFileReader")
29+
private FileReader reader;
30+
31+
@Test
32+
public void resolveByExplicitName() {
33+
Assert.assertNotNull(reader);
34+
Assert.assertEquals(reader.getClass(), WordFileReader.class);
35+
}
36+
37+
//Resolve by type auto detection
38+
@Resource
39+
private WordFileReader fileReader;
40+
41+
@Test
42+
public void resolveByAutoType(){
43+
Assert.assertNotNull(fileReader);
44+
Assert.assertEquals(fileReader.getClass(), WordFileReader.class);
45+
}
46+
47+
//Resolve by explicit Type
48+
@Resource(type = PdfFileReader.class)
49+
private FileReader fileReader2;
50+
51+
@Test
52+
public void resolveByExplicitType() {
53+
Assert.assertNotNull(fileReader2);
54+
Assert.assertEquals(fileReader2.getClass(), PdfFileReader.class);
55+
}
56+
57+
//Resolve by Qualifier
58+
@Qualifier("pdfFileReader")
59+
@Resource
60+
private FileReader myFileReader;
61+
62+
@Test
63+
public void resolveByQualifier(){
64+
Assert.assertNotNull(myFileReader);
65+
Assert.assertEquals(myFileReader.getClass(), PdfFileReader.class);
66+
}
67+
}

0 commit comments

Comments
 (0)