From 66471cf0574c85f8ff514ec4caf5ba44ebba1a74 Mon Sep 17 00:00:00 2001 From: Tomasz Date: Mon, 6 Mar 2017 21:15:46 +0100 Subject: [PATCH] XML-based configuration replaced with Java Config. --- injecting-beans/README.txt | 2 + .../src/main/java/com/baeldung/App.java | 5 +- .../src/main/java/com/baeldung/Computer.java | 17 +++--- .../java/com/baeldung/config/AppConfig.java | 54 +++++++++++++++++++ .../java/com/baeldung/model/GraphicsCard.java | 5 +- .../com/baeldung/model/OperatingSystem.java | 3 ++ .../java/com/baeldung/model/Processor.java | 3 ++ .../main/java/com/baeldung/model/Screen.java | 4 +- 8 files changed, 80 insertions(+), 13 deletions(-) create mode 100644 injecting-beans/README.txt create mode 100644 injecting-beans/src/main/java/com/baeldung/config/AppConfig.java diff --git a/injecting-beans/README.txt b/injecting-beans/README.txt new file mode 100644 index 0000000000..99043a5cae --- /dev/null +++ b/injecting-beans/README.txt @@ -0,0 +1,2 @@ +If you are interested in XML-based configuration, you can see all the injections done with this approach by +just using Spring-Module.xml in App.java (It's commented by default). \ No newline at end of file diff --git a/injecting-beans/src/main/java/com/baeldung/App.java b/injecting-beans/src/main/java/com/baeldung/App.java index 2afc005c76..048fb1a35a 100644 --- a/injecting-beans/src/main/java/com/baeldung/App.java +++ b/injecting-beans/src/main/java/com/baeldung/App.java @@ -1,6 +1,8 @@ package com.baeldung; +import com.baeldung.config.AppConfig; import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** @@ -8,8 +10,9 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; */ public class App { public static void main(String[] args) { - ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml"); +// ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml"); + ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); Computer obj = (Computer) context.getBean("computer"); obj.print(); } diff --git a/injecting-beans/src/main/java/com/baeldung/Computer.java b/injecting-beans/src/main/java/com/baeldung/Computer.java index b9551ad34d..29c33fec09 100644 --- a/injecting-beans/src/main/java/com/baeldung/Computer.java +++ b/injecting-beans/src/main/java/com/baeldung/Computer.java @@ -15,14 +15,11 @@ public class Computer { private Screen screen; private OperatingSystem operatingSystem; - public Computer(Processor processor) { - this.processor = processor; - } - @Autowired - public Computer(OperatingSystem operatingSystem, Processor processor) { + public Computer(Processor processor, OperatingSystem operatingSystem, HardDisk hardDisk) { this.operatingSystem = operatingSystem; this.processor = processor; + this.hardDisk = hardDisk; } public void setHardDisk(HardDisk hardDisk) { @@ -35,11 +32,11 @@ public class Computer { } public void print() { - System.out.println("Injected processor by constructor injection: " + processor.getName()); - System.out.println("Injected hard disk by setter injection: " + hardDisk.getName()); - System.out.println("Injected graphics card with field annotation: " + graphicsCard.getName()); - System.out.println("Injected screen with setter annotation: " + screen.getSize()); - System.out.println("Injected operating system name with constructor annotation: " + operatingSystem.getName()); + System.out.println("Injected processor: " + processor.getName()); + System.out.println("Injected hard disk: " + hardDisk.getName()); + System.out.println("Injected graphics card: " + graphicsCard.getName()); + System.out.println("Injected screen size: " + screen.getSize()); + System.out.println("Injected operating system name: " + operatingSystem.getName()); } @Override diff --git a/injecting-beans/src/main/java/com/baeldung/config/AppConfig.java b/injecting-beans/src/main/java/com/baeldung/config/AppConfig.java new file mode 100644 index 0000000000..eb7b3442a1 --- /dev/null +++ b/injecting-beans/src/main/java/com/baeldung/config/AppConfig.java @@ -0,0 +1,54 @@ +package com.baeldung.config; + +import com.baeldung.Computer; +import com.baeldung.model.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Beans configuration. + */ +@Configuration +public class AppConfig { + + @Bean(name = "computer") + public Computer computer() { + return new Computer(processor(), operatingSystem(), hardDisk()); + } + + @Bean(name = "processor") + public Processor processor() { + Processor processor = new Processor(); + processor.setName("Intel Core i7-6650U"); + return processor; + } + + @Bean(name = "hardDisk") + public HardDisk hardDisk() { + HardDisk hardDisk = new HardDisk(); + hardDisk.setName("SSD TRANSCEND MTS400"); + return hardDisk; + } + + @Bean(name = "graphicsCard") + public GraphicsCard graphicsCard() { + GraphicsCard graphicsCard = new GraphicsCard(); + graphicsCard.setName("NVIDIA GeForce GTX980M"); + return graphicsCard; + } + + @Bean(name = "operatingSystem") + public OperatingSystem operatingSystem() { + OperatingSystem operatingSystem = new OperatingSystem(); + operatingSystem.setName("Windows 10 Pro"); + return operatingSystem; + } + + @Bean(name = "screen") + public Screen screen() { + Screen screen = new Screen(); + screen.setSize("17 inches"); + return screen; + } + +} diff --git a/injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java b/injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java index 70bec9b1cd..6ae2d6a891 100644 --- a/injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java +++ b/injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java @@ -4,7 +4,10 @@ package com.baeldung.model; * Model for graphics card. */ public class GraphicsCard { - String name; + private String name; + + public GraphicsCard() { + } public String getName() { return name; diff --git a/injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java b/injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java index 296445e60b..e804d1fd50 100644 --- a/injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java +++ b/injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java @@ -6,6 +6,9 @@ package com.baeldung.model; public class OperatingSystem { private String name; + public OperatingSystem(){ + } + public String getName() { return name; } diff --git a/injecting-beans/src/main/java/com/baeldung/model/Processor.java b/injecting-beans/src/main/java/com/baeldung/model/Processor.java index ef41b15902..f6d4c0969d 100644 --- a/injecting-beans/src/main/java/com/baeldung/model/Processor.java +++ b/injecting-beans/src/main/java/com/baeldung/model/Processor.java @@ -6,6 +6,9 @@ package com.baeldung.model; public class Processor { private String name; + public Processor() { + } + public String getName() { return name; } diff --git a/injecting-beans/src/main/java/com/baeldung/model/Screen.java b/injecting-beans/src/main/java/com/baeldung/model/Screen.java index 08b5da0550..85658494d1 100644 --- a/injecting-beans/src/main/java/com/baeldung/model/Screen.java +++ b/injecting-beans/src/main/java/com/baeldung/model/Screen.java @@ -4,9 +4,11 @@ package com.baeldung.model; * Model for Screen. */ public class Screen { - private String size; + public Screen() { + } + public String getSize() { return size; }