diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 55621f8b0..218a9e360 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,8 +4,8 @@
-
-
+
+
@@ -207,7 +207,7 @@
-
+
@@ -329,7 +329,15 @@
1736364004544
-
+
+
+ 1736364609129
+
+
+
+ 1736364609129
+
+
@@ -354,7 +362,8 @@
-
+
+
diff --git a/src/main/java/guru/springframework/sfgdi/SfgDiApplication.java b/src/main/java/guru/springframework/sfgdi/SfgDiApplication.java
index e8283c574..ff697a58f 100644
--- a/src/main/java/guru/springframework/sfgdi/SfgDiApplication.java
+++ b/src/main/java/guru/springframework/sfgdi/SfgDiApplication.java
@@ -1,6 +1,7 @@
package guru.springframework.sfgdi;
import guru.springframework.sfgdi.config.SfgConfiguration;
+import guru.springframework.sfgdi.config.SfgConstructorConfig;
import guru.springframework.sfgdi.controllers.*;
import guru.springframework.sfgdi.datasource.FakeDataSource;
import guru.springframework.sfgdi.services.PrototypeBean;
@@ -62,6 +63,12 @@ public static void main(String[] args) {
System.out.println(sfgConfiguration.getUsername());
System.out.println(sfgConfiguration.getPassword());
System.out.println(sfgConfiguration.getJdbcurl());
+
+ System.out.println("---------- Constructor Binding");
+ SfgConstructorConfig sfgConstructorConfig = ctx.getBean(SfgConstructorConfig.class);
+ System.out.println(sfgConstructorConfig.getUsername());
+ System.out.println(sfgConstructorConfig.getPassword());
+ System.out.println(sfgConstructorConfig.getJdbcurl());
}
}
diff --git a/src/main/java/guru/springframework/sfgdi/config/GreetingServiceConfig.java b/src/main/java/guru/springframework/sfgdi/config/GreetingServiceConfig.java
index cca51f8a9..8683e9e32 100644
--- a/src/main/java/guru/springframework/sfgdi/config/GreetingServiceConfig.java
+++ b/src/main/java/guru/springframework/sfgdi/config/GreetingServiceConfig.java
@@ -6,18 +6,20 @@
import guru.springframework.sfgdi.repositories.EnglishGreetingRepository;
import guru.springframework.sfgdi.repositories.EnglishGreetingRepositoryImpl;
import guru.springframework.sfgdi.services.*;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.*;
+@EnableConfigurationProperties(SfgConstructorConfig.class)
@ImportResource("classpath:sfgdi-config.xml")
@Configuration
public class GreetingServiceConfig {
@Bean
- FakeDataSource fakeDataSource(SfgConfiguration sfgConfiguration) {
+ FakeDataSource fakeDataSource(SfgConstructorConfig sfgConstructorConfig) {
FakeDataSource fakeDataSource = new FakeDataSource();
- fakeDataSource.setUsername(sfgConfiguration.getUsername());
- fakeDataSource.setPassword(sfgConfiguration.getPassword());
- fakeDataSource.setJdbcurl(sfgConfiguration.getJdbcurl());
+ fakeDataSource.setUsername(sfgConstructorConfig.getUsername());
+ fakeDataSource.setPassword(sfgConstructorConfig.getPassword());
+ fakeDataSource.setJdbcurl(sfgConstructorConfig.getJdbcurl());
return fakeDataSource;
}
diff --git a/src/main/java/guru/springframework/sfgdi/config/SfgConstructorConfig.java b/src/main/java/guru/springframework/sfgdi/config/SfgConstructorConfig.java
new file mode 100644
index 000000000..0a17f5faa
--- /dev/null
+++ b/src/main/java/guru/springframework/sfgdi/config/SfgConstructorConfig.java
@@ -0,0 +1,30 @@
+package guru.springframework.sfgdi.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.ConstructorBinding;
+
+@ConstructorBinding
+@ConfigurationProperties("guru")
+public class SfgConstructorConfig {
+ private final String username;
+ private final String password;
+ private final String jdbcurl;
+
+ public SfgConstructorConfig(String username, String password, String jdbcurl) {
+ this.username = username;
+ this.password = password;
+ this.jdbcurl = jdbcurl;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public String getJdbcurl() {
+ return jdbcurl;
+ }
+}