From 7a15270fc368677b08daffd4e40eee52f443729b Mon Sep 17 00:00:00 2001 From: thibaultfaure Date: Mon, 14 Feb 2022 14:31:59 -0300 Subject: [PATCH] BAEL-5336 Move code for the article to spring-di-3 (#11807) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * JAVA-7535 Moved ebook specific code snippets to maven-simple module * COMAUTO-9485 Fixed DB url in spring-project and added missing maven wrapper * Code for the Spring @Autowired Field Null – Common Causes and Solutions article * JAVA-7535 Added code for maven-multi-module * JAVA-7535 Pom formatting * JAVA-7535 Pom formatting * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Create README.md * Create README.md * JAVA-9825: Upgrade log4j version for modules that use log4j-core library directly * BAEL-5188 Add CSRF cookie protection + test (#11775) * BAEL-5188 Add CSRF cookie protection + test * BAEL-5188 Break long lines of code * BAEL-5188 Remove line-breaks before semi-colons * BAEL-5378 Rename exceptions to avoid confusion (#11801) * BAEL-5336 Move code for the article to spring-di-3 Co-authored-by: Dhawal Kapil Co-authored-by: Dhawal Kapil Co-authored-by: johnA1331 <53036378+johnA1331@users.noreply.github.com> Co-authored-by: sampadawagde Co-authored-by: Benjamin Caure Co-authored-by: ashleyfrieze --- .../java/com/baeldung/autowiring/App.java | 14 ++++++++++ .../controller/CorrectController.java | 18 ++++++++++++ .../controller/FlawedController.java | 15 ++++++++++ .../autowiring/service/MyComponent.java | 10 +++++++ .../autowiring/service/MyService.java | 19 +++++++++++++ .../service/MyServiceConfiguration.java | 14 ++++++++++ .../CorrectControllerIntegrationTest.java | 23 +++++++++++++++ .../FlawedControllerIntegrationTest.java | 28 +++++++++++++++++++ 8 files changed, 141 insertions(+) create mode 100644 spring-di-3/src/main/java/com/baeldung/autowiring/App.java create mode 100644 spring-di-3/src/main/java/com/baeldung/autowiring/controller/CorrectController.java create mode 100644 spring-di-3/src/main/java/com/baeldung/autowiring/controller/FlawedController.java create mode 100644 spring-di-3/src/main/java/com/baeldung/autowiring/service/MyComponent.java create mode 100644 spring-di-3/src/main/java/com/baeldung/autowiring/service/MyService.java create mode 100644 spring-di-3/src/main/java/com/baeldung/autowiring/service/MyServiceConfiguration.java create mode 100644 spring-di-3/src/test/java/com/baeldung/autowiring/controller/CorrectControllerIntegrationTest.java create mode 100644 spring-di-3/src/test/java/com/baeldung/autowiring/controller/FlawedControllerIntegrationTest.java diff --git a/spring-di-3/src/main/java/com/baeldung/autowiring/App.java b/spring-di-3/src/main/java/com/baeldung/autowiring/App.java new file mode 100644 index 0000000000..d2d0db7a60 --- /dev/null +++ b/spring-di-3/src/main/java/com/baeldung/autowiring/App.java @@ -0,0 +1,14 @@ +package com.baeldung.autowiring; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootApplication +public class App { + + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } + +} diff --git a/spring-di-3/src/main/java/com/baeldung/autowiring/controller/CorrectController.java b/spring-di-3/src/main/java/com/baeldung/autowiring/controller/CorrectController.java new file mode 100644 index 0000000000..e0c0d7eeac --- /dev/null +++ b/spring-di-3/src/main/java/com/baeldung/autowiring/controller/CorrectController.java @@ -0,0 +1,18 @@ +package com.baeldung.autowiring.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; + +import com.baeldung.autowiring.service.MyService; + +@Controller +public class CorrectController { + + @Autowired + MyService myService; + + public String control() { + return myService.serve(); + } + +} diff --git a/spring-di-3/src/main/java/com/baeldung/autowiring/controller/FlawedController.java b/spring-di-3/src/main/java/com/baeldung/autowiring/controller/FlawedController.java new file mode 100644 index 0000000000..673e686f79 --- /dev/null +++ b/spring-di-3/src/main/java/com/baeldung/autowiring/controller/FlawedController.java @@ -0,0 +1,15 @@ +package com.baeldung.autowiring.controller; + +import org.springframework.stereotype.Controller; + +import com.baeldung.autowiring.service.MyService; + +@Controller +public class FlawedController { + + public String control() { + MyService userService = new MyService(); + return userService.serve(); + } + +} diff --git a/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyComponent.java b/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyComponent.java new file mode 100644 index 0000000000..c04ca3f4ba --- /dev/null +++ b/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyComponent.java @@ -0,0 +1,10 @@ +package com.baeldung.autowiring.service; + +import org.springframework.stereotype.Component; + +@Component +public class MyComponent { + + public void doWork() {} + +} diff --git a/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyService.java b/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyService.java new file mode 100644 index 0000000000..3443dc05de --- /dev/null +++ b/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyService.java @@ -0,0 +1,19 @@ +package com.baeldung.autowiring.service; + +import org.springframework.beans.factory.annotation.Autowired; + +/** + * The bean corresponding to this class is defined in MyServiceConfiguration + * Alternatively, you could choose to decorate this class with @Component or @Service + */ +public class MyService { + + @Autowired + MyComponent myComponent; + + public String serve() { + myComponent.doWork(); + return "success"; + } + +} diff --git a/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyServiceConfiguration.java b/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyServiceConfiguration.java new file mode 100644 index 0000000000..e30e4f770e --- /dev/null +++ b/spring-di-3/src/main/java/com/baeldung/autowiring/service/MyServiceConfiguration.java @@ -0,0 +1,14 @@ +package com.baeldung.autowiring.service; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MyServiceConfiguration { + + @Bean + MyService myService() { + return new MyService(); + } + +} diff --git a/spring-di-3/src/test/java/com/baeldung/autowiring/controller/CorrectControllerIntegrationTest.java b/spring-di-3/src/test/java/com/baeldung/autowiring/controller/CorrectControllerIntegrationTest.java new file mode 100644 index 0000000000..3807641edd --- /dev/null +++ b/spring-di-3/src/test/java/com/baeldung/autowiring/controller/CorrectControllerIntegrationTest.java @@ -0,0 +1,23 @@ +package com.baeldung.autowiring.controller; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + +@ExtendWith(SpringExtension.class) +@SpringBootTest +public class CorrectControllerIntegrationTest { + + @Autowired + CorrectController controller; + + @Test + void whenControl_ThenRunSuccessfully() { + assertDoesNotThrow(() -> controller.control()); + } + +} diff --git a/spring-di-3/src/test/java/com/baeldung/autowiring/controller/FlawedControllerIntegrationTest.java b/spring-di-3/src/test/java/com/baeldung/autowiring/controller/FlawedControllerIntegrationTest.java new file mode 100644 index 0000000000..79d446604f --- /dev/null +++ b/spring-di-3/src/test/java/com/baeldung/autowiring/controller/FlawedControllerIntegrationTest.java @@ -0,0 +1,28 @@ +package com.baeldung.autowiring.controller; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +@ExtendWith(SpringExtension.class) +@SpringBootTest +public class FlawedControllerIntegrationTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(FlawedControllerIntegrationTest.class); + + @Autowired + FlawedController myController; + + @Test + void whenControl_ThenThrowNullPointerException() { + NullPointerException npe = assertThrows(NullPointerException.class, () -> myController.control()); + LOGGER.error("Got a NullPointerException", npe); + } + +}