From 580a3bb9205f554961603ff505d7dda1562e5d3f Mon Sep 17 00:00:00 2001 From: Nguyen Nam Thai Date: Tue, 23 Jun 2020 17:58:44 +0700 Subject: [PATCH 1/3] BAEL-4068 Add AspectJ DI to module spring-di-2 --- spring-di-2/pom.xml | 65 +++++++++++++++++++ .../baeldung/di/aspectj/AspectJConfig.java | 9 +++ .../com/baeldung/di/aspectj/IdService.java | 12 ++++ .../com/baeldung/di/aspectj/PersonEntity.java | 36 ++++++++++ .../com/baeldung/di/aspectj/PersonObject.java | 29 +++++++++ .../baeldung/di/aspectj/PersonUnitTest.java | 24 +++++++ 6 files changed, 175 insertions(+) create mode 100644 spring-di-2/pom.xml create mode 100644 spring-di-2/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java create mode 100644 spring-di-2/src/main/java/com/baeldung/di/aspectj/IdService.java create mode 100644 spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonEntity.java create mode 100644 spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonObject.java create mode 100644 spring-di-2/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java diff --git a/spring-di-2/pom.xml b/spring-di-2/pom.xml new file mode 100644 index 0000000000..9b703d55d9 --- /dev/null +++ b/spring-di-2/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + spring-di-2 + 1.0-SNAPSHOT + spring-di-2 + + + com.baeldung + parent-spring-5 + 0.0.1-SNAPSHOT + ../parent-spring-5 + + + + + org.springframework + spring-test + ${spring.version} + + + org.springframework.boot + spring-boot-starter-data-jpa + ${spring-boot.version} + + + org.springframework + spring-aspects + ${spring.version} + + + + + + + org.codehaus.mojo + aspectj-maven-plugin + ${aspectj-plugin.version} + + ${java.version} + + + org.springframework + spring-aspects + + + + + + + compile + + + + + + + + + 2.3.1.RELEASE + 1.11 + + \ No newline at end of file diff --git a/spring-di-2/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java b/spring-di-2/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java new file mode 100644 index 0000000000..41d43483ac --- /dev/null +++ b/spring-di-2/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java @@ -0,0 +1,9 @@ +package com.baeldung.di.aspectj; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.aspectj.EnableSpringConfigured; + +@ComponentScan +@EnableSpringConfigured +public class AspectJConfig { +} diff --git a/spring-di-2/src/main/java/com/baeldung/di/aspectj/IdService.java b/spring-di-2/src/main/java/com/baeldung/di/aspectj/IdService.java new file mode 100644 index 0000000000..4589f28309 --- /dev/null +++ b/spring-di-2/src/main/java/com/baeldung/di/aspectj/IdService.java @@ -0,0 +1,12 @@ +package com.baeldung.di.aspectj; + +import org.springframework.stereotype.Service; + +@Service +public class IdService { + private static int count; + + int generateId() { + return ++count; + } +} diff --git a/spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonEntity.java b/spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonEntity.java new file mode 100644 index 0000000000..f087a97c7e --- /dev/null +++ b/spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonEntity.java @@ -0,0 +1,36 @@ +package com.baeldung.di.aspectj; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Configurable; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Transient; + +@Entity +@Configurable(preConstruction = true) +public class PersonEntity { + @Autowired + @Transient + private IdService idService; + + @Id + private int id; + private String name; + + public PersonEntity() { + } + + public PersonEntity(String name) { + id = idService.generateId(); + this.name = name; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonObject.java b/spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonObject.java new file mode 100644 index 0000000000..e63e43ce3d --- /dev/null +++ b/spring-di-2/src/main/java/com/baeldung/di/aspectj/PersonObject.java @@ -0,0 +1,29 @@ +package com.baeldung.di.aspectj; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Configurable; + +@Configurable +public class PersonObject { + @Autowired + private IdService idService; + + private int id; + private String name; + + public PersonObject(String name) { + this.name = name; + } + + void generateId() { + this.id = idService.generateId(); + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } +} \ No newline at end of file diff --git a/spring-di-2/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java b/spring-di-2/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java new file mode 100644 index 0000000000..72ccfbadf3 --- /dev/null +++ b/spring-di-2/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.di.aspectj; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = AspectJConfig.class) +public class PersonUnitTest { + @Test + public void givenUnmanagedObjects_whenInjectingIdService_thenIdValueIsCorrectlySet() { + PersonObject personObject = new PersonObject("Baeldung"); + personObject.generateId(); + assertEquals(1, personObject.getId()); + assertEquals("Baeldung", personObject.getName()); + + PersonEntity personEntity = new PersonEntity("Baeldung"); + assertEquals(2, personEntity.getId()); + assertEquals("Baeldung", personEntity.getName()); + } +} \ No newline at end of file From fd16e9ed4fff36e5bc3dcf67d47ff2fc58d869c5 Mon Sep 17 00:00:00 2001 From: Nguyen Nam Thai Date: Tue, 23 Jun 2020 18:01:17 +0700 Subject: [PATCH 2/3] BAEL-4068 Remove AspectJ DI from module spring-di --- spring-di/pom.xml | 33 +---------------- .../baeldung/di/aspectj/AspectJConfig.java | 9 ----- .../com/baeldung/di/aspectj/IdService.java | 12 ------- .../com/baeldung/di/aspectj/PersonEntity.java | 36 ------------------- .../com/baeldung/di/aspectj/PersonObject.java | 29 --------------- .../baeldung/di/aspectj/PersonUnitTest.java | 24 ------------- 6 files changed, 1 insertion(+), 142 deletions(-) delete mode 100644 spring-di/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java delete mode 100644 spring-di/src/main/java/com/baeldung/di/aspectj/IdService.java delete mode 100644 spring-di/src/main/java/com/baeldung/di/aspectj/PersonEntity.java delete mode 100644 spring-di/src/main/java/com/baeldung/di/aspectj/PersonObject.java delete mode 100644 spring-di/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java diff --git a/spring-di/pom.xml b/spring-di/pom.xml index d556bcd9a4..48cdf60673 100644 --- a/spring-di/pom.xml +++ b/spring-di/pom.xml @@ -68,11 +68,6 @@ spring-boot-starter ${spring-boot.version} - - org.springframework.boot - spring-boot-starter-data-jpa - ${spring-boot.version} - org.springframework.boot spring-boot-test @@ -95,11 +90,7 @@ aspectjweaver ${aspectjweaver.version} - - org.springframework - spring-aspects - ${spring.version} - + @@ -138,27 +129,6 @@ false - - org.codehaus.mojo - aspectj-maven-plugin - ${aspectj-plugin.version} - - ${java.version} - - - org.springframework - spring-aspects - - - - - - - compile - - - - @@ -194,7 +164,6 @@ 1.10.19 3.12.2 1.9.5 - 1.11 \ No newline at end of file diff --git a/spring-di/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java b/spring-di/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java deleted file mode 100644 index 41d43483ac..0000000000 --- a/spring-di/src/main/java/com/baeldung/di/aspectj/AspectJConfig.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.di.aspectj; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.aspectj.EnableSpringConfigured; - -@ComponentScan -@EnableSpringConfigured -public class AspectJConfig { -} diff --git a/spring-di/src/main/java/com/baeldung/di/aspectj/IdService.java b/spring-di/src/main/java/com/baeldung/di/aspectj/IdService.java deleted file mode 100644 index 4589f28309..0000000000 --- a/spring-di/src/main/java/com/baeldung/di/aspectj/IdService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.di.aspectj; - -import org.springframework.stereotype.Service; - -@Service -public class IdService { - private static int count; - - int generateId() { - return ++count; - } -} diff --git a/spring-di/src/main/java/com/baeldung/di/aspectj/PersonEntity.java b/spring-di/src/main/java/com/baeldung/di/aspectj/PersonEntity.java deleted file mode 100644 index f087a97c7e..0000000000 --- a/spring-di/src/main/java/com/baeldung/di/aspectj/PersonEntity.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.di.aspectj; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Configurable; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Transient; - -@Entity -@Configurable(preConstruction = true) -public class PersonEntity { - @Autowired - @Transient - private IdService idService; - - @Id - private int id; - private String name; - - public PersonEntity() { - } - - public PersonEntity(String name) { - id = idService.generateId(); - this.name = name; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } -} diff --git a/spring-di/src/main/java/com/baeldung/di/aspectj/PersonObject.java b/spring-di/src/main/java/com/baeldung/di/aspectj/PersonObject.java deleted file mode 100644 index e63e43ce3d..0000000000 --- a/spring-di/src/main/java/com/baeldung/di/aspectj/PersonObject.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.di.aspectj; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Configurable; - -@Configurable -public class PersonObject { - @Autowired - private IdService idService; - - private int id; - private String name; - - public PersonObject(String name) { - this.name = name; - } - - void generateId() { - this.id = idService.generateId(); - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } -} \ No newline at end of file diff --git a/spring-di/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java b/spring-di/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java deleted file mode 100644 index 72ccfbadf3..0000000000 --- a/spring-di/src/test/java/com/baeldung/di/aspectj/PersonUnitTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.di.aspectj; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = AspectJConfig.class) -public class PersonUnitTest { - @Test - public void givenUnmanagedObjects_whenInjectingIdService_thenIdValueIsCorrectlySet() { - PersonObject personObject = new PersonObject("Baeldung"); - personObject.generateId(); - assertEquals(1, personObject.getId()); - assertEquals("Baeldung", personObject.getName()); - - PersonEntity personEntity = new PersonEntity("Baeldung"); - assertEquals(2, personEntity.getId()); - assertEquals("Baeldung", personEntity.getName()); - } -} \ No newline at end of file From 8bd2b780860e00c88ae804d526cb35186bc96784 Mon Sep 17 00:00:00 2001 From: Nguyen Nam Thai Date: Tue, 23 Jun 2020 18:33:33 +0700 Subject: [PATCH 3/3] BAEL-4068 Add spring-di-2 to the parent project --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 7958b31a31..41c26b21a0 100644 --- a/pom.xml +++ b/pom.xml @@ -655,6 +655,7 @@ spring-data-rest spring-data-rest-querydsl spring-di + spring-di-2 spring-dispatcher-servlet spring-drools