Skip to content

Commit 66471cf

Browse files
committed
XML-based configuration replaced with Java Config.
1 parent d2ac201 commit 66471cf

File tree

8 files changed

+80
-13
lines changed

8 files changed

+80
-13
lines changed

injecting-beans/README.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
If you are interested in XML-based configuration, you can see all the injections done with this approach by
2+
just using Spring-Module.xml in App.java (It's commented by default).

injecting-beans/src/main/java/com/baeldung/App.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package com.baeldung;
22

3+
import com.baeldung.config.AppConfig;
34
import org.springframework.context.ApplicationContext;
5+
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
46
import org.springframework.context.support.ClassPathXmlApplicationContext;
57

68
/**
79
* Application presenting various possibilities of bean injections in Spring.
810
*/
911
public class App {
1012
public static void main(String[] args) {
11-
ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
13+
// ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
1214

15+
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
1316
Computer obj = (Computer) context.getBean("computer");
1417
obj.print();
1518
}

injecting-beans/src/main/java/com/baeldung/Computer.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,11 @@ public class Computer {
1515
private Screen screen;
1616
private OperatingSystem operatingSystem;
1717

18-
public Computer(Processor processor) {
19-
this.processor = processor;
20-
}
21-
2218
@Autowired
23-
public Computer(OperatingSystem operatingSystem, Processor processor) {
19+
public Computer(Processor processor, OperatingSystem operatingSystem, HardDisk hardDisk) {
2420
this.operatingSystem = operatingSystem;
2521
this.processor = processor;
22+
this.hardDisk = hardDisk;
2623
}
2724

2825
public void setHardDisk(HardDisk hardDisk) {
@@ -35,11 +32,11 @@ public void setScreen(Screen screen) {
3532
}
3633

3734
public void print() {
38-
System.out.println("Injected processor by constructor injection: " + processor.getName());
39-
System.out.println("Injected hard disk by setter injection: " + hardDisk.getName());
40-
System.out.println("Injected graphics card with field annotation: " + graphicsCard.getName());
41-
System.out.println("Injected screen with setter annotation: " + screen.getSize());
42-
System.out.println("Injected operating system name with constructor annotation: " + operatingSystem.getName());
35+
System.out.println("Injected processor: " + processor.getName());
36+
System.out.println("Injected hard disk: " + hardDisk.getName());
37+
System.out.println("Injected graphics card: " + graphicsCard.getName());
38+
System.out.println("Injected screen size: " + screen.getSize());
39+
System.out.println("Injected operating system name: " + operatingSystem.getName());
4340
}
4441

4542
@Override
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.baeldung.config;
2+
3+
import com.baeldung.Computer;
4+
import com.baeldung.model.*;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
/**
9+
* Beans configuration.
10+
*/
11+
@Configuration
12+
public class AppConfig {
13+
14+
@Bean(name = "computer")
15+
public Computer computer() {
16+
return new Computer(processor(), operatingSystem(), hardDisk());
17+
}
18+
19+
@Bean(name = "processor")
20+
public Processor processor() {
21+
Processor processor = new Processor();
22+
processor.setName("Intel Core i7-6650U");
23+
return processor;
24+
}
25+
26+
@Bean(name = "hardDisk")
27+
public HardDisk hardDisk() {
28+
HardDisk hardDisk = new HardDisk();
29+
hardDisk.setName("SSD TRANSCEND MTS400");
30+
return hardDisk;
31+
}
32+
33+
@Bean(name = "graphicsCard")
34+
public GraphicsCard graphicsCard() {
35+
GraphicsCard graphicsCard = new GraphicsCard();
36+
graphicsCard.setName("NVIDIA GeForce GTX980M");
37+
return graphicsCard;
38+
}
39+
40+
@Bean(name = "operatingSystem")
41+
public OperatingSystem operatingSystem() {
42+
OperatingSystem operatingSystem = new OperatingSystem();
43+
operatingSystem.setName("Windows 10 Pro");
44+
return operatingSystem;
45+
}
46+
47+
@Bean(name = "screen")
48+
public Screen screen() {
49+
Screen screen = new Screen();
50+
screen.setSize("17 inches");
51+
return screen;
52+
}
53+
54+
}

injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
* Model for graphics card.
55
*/
66
public class GraphicsCard {
7-
String name;
7+
private String name;
8+
9+
public GraphicsCard() {
10+
}
811

912
public String getName() {
1013
return name;

injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
public class OperatingSystem {
77
private String name;
88

9+
public OperatingSystem(){
10+
}
11+
912
public String getName() {
1013
return name;
1114
}

injecting-beans/src/main/java/com/baeldung/model/Processor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
public class Processor {
77
private String name;
88

9+
public Processor() {
10+
}
11+
912
public String getName() {
1013
return name;
1114
}

injecting-beans/src/main/java/com/baeldung/model/Screen.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
* Model for Screen.
55
*/
66
public class Screen {
7-
87
private String size;
98

9+
public Screen() {
10+
}
11+
1012
public String getSize() {
1113
return size;
1214
}

0 commit comments

Comments
 (0)