From 6f8b90830e5911b83a850f6232cf66b089371b49 Mon Sep 17 00:00:00 2001 From: "Kai.Yuan" Date: Sat, 30 Mar 2024 22:44:48 +0100 Subject: [PATCH] [static-injection] improvement --- .../staticvalue/injection/Application.java | 17 ----------- .../injection/PropertyController.java | 30 ------------------- .../StaticPropertyHolder.java | 26 ++++++++++++++++ .../src/main/resources/application.properties | 2 +- .../StaticPropertyHolderUnitTest.java | 18 +++++++++++ 5 files changed, 45 insertions(+), 48 deletions(-) delete mode 100644 spring-di-2/src/main/java/com/baeldung/staticvalue/injection/Application.java delete mode 100644 spring-di-2/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java create mode 100644 spring-di-2/src/main/java/com/baeldung/staticvalueinjection/StaticPropertyHolder.java create mode 100644 spring-di-2/src/test/java/com/baeldung/staticvalueinjection/StaticPropertyHolderUnitTest.java diff --git a/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/Application.java b/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/Application.java deleted file mode 100644 index b4222ddcc9..0000000000 --- a/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/Application.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.staticvalue.injection; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.context.annotation.PropertySource; - -@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) -@PropertySource("/application.properties") - -public class Application { - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - -} diff --git a/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java b/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java deleted file mode 100644 index f5910ea4f8..0000000000 --- a/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.staticvalue.injection; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Arrays; -import java.util.List; - -@RestController -public class PropertyController { - - @Value("${name}") - private String name; - - @Value("${name}") - private static String NAME_NULL; - - private static String NAME_STATIC; - - @Value("${name}") - public void setNameStatic(String name){ - PropertyController.NAME_STATIC = name; - } - - @GetMapping("/properties") - public List getProperties(){ - return Arrays.asList(this.name, NAME_STATIC, NAME_NULL) ; - } -} diff --git a/spring-di-2/src/main/java/com/baeldung/staticvalueinjection/StaticPropertyHolder.java b/spring-di-2/src/main/java/com/baeldung/staticvalueinjection/StaticPropertyHolder.java new file mode 100644 index 0000000000..4d9911eef1 --- /dev/null +++ b/spring-di-2/src/main/java/com/baeldung/staticvalueinjection/StaticPropertyHolder.java @@ -0,0 +1,26 @@ +package com.baeldung.staticvalueinjection; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +public class StaticPropertyHolder { + + @Value("${name}") + private static String STATIC_NAME_INJECTED_ON_FIELD; + + private static String STATIC_NAME; + + @Value("${name}") + public void setStaticName(String name) { + STATIC_NAME = name; + } + + public static String getStaticName() { + return STATIC_NAME; + } + + public static String getStaticNameInjectedOnField() { + return STATIC_NAME_INJECTED_ON_FIELD; + } +} \ No newline at end of file diff --git a/spring-di-2/src/main/resources/application.properties b/spring-di-2/src/main/resources/application.properties index 828fa9cd2a..32eff61207 100644 --- a/spring-di-2/src/main/resources/application.properties +++ b/spring-di-2/src/main/resources/application.properties @@ -1 +1 @@ -name = Inject a value to a static field +name = Inject a value to a static field \ No newline at end of file diff --git a/spring-di-2/src/test/java/com/baeldung/staticvalueinjection/StaticPropertyHolderUnitTest.java b/spring-di-2/src/test/java/com/baeldung/staticvalueinjection/StaticPropertyHolderUnitTest.java new file mode 100644 index 0000000000..4e73ff56b9 --- /dev/null +++ b/spring-di-2/src/test/java/com/baeldung/staticvalueinjection/StaticPropertyHolderUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.staticvalueinjection; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest(classes = StaticPropertyHolder.class) +public class StaticPropertyHolderUnitTest { + + @Test + public void givenStaticPropertyInSpringBean_WhenUsingValueOnSetter_ThenValueInjected() { + assertNull(StaticPropertyHolder.getStaticNameInjectedOnField()); + assertEquals("Inject a value to a static field", StaticPropertyHolder.getStaticName()); + } + +} \ No newline at end of file