diff --git a/2019-08/spring-03/.gitignore b/2019-08/spring-03/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2019-08/spring-03/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2019-08/spring-03/pom.xml b/2019-08/spring-03/pom.xml new file mode 100644 index 00000000..a3108dd4 --- /dev/null +++ b/2019-08/spring-03/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + ru.otus + spring-03 + 1.0 + + pom + + + spring-03-exercise + spring-03-solution + + diff --git a/2019-08/spring-03/spring-03-exercise/pom.xml b/2019-08/spring-03/spring-03-exercise/pom.xml new file mode 100644 index 00000000..3574d73d --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + ru.otus + spring-03-exercise + 1.0 + + + 1.8 + 1.8 + UTF-8 + + + + + org.springframework + spring-context + 5.1.9.RELEASE + + + + org.springframework + spring-aop + 5.1.9.RELEASE + + + org.aspectj + aspectjrt + 1.9.4 + + + org.aspectj + aspectjweaver + 1.9.4 + + + diff --git a/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/Main.java b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/Main.java new file mode 100644 index 00000000..053c51c4 --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/Main.java @@ -0,0 +1,20 @@ +package ru.otus.spring03; + +import org.springframework.context.annotation.*; +import ru.otus.spring03.domain.Person; +import ru.otus.spring03.service.PersonService; + +@Configuration +@ComponentScan +public class Main { + + public static void main(String[] args) { + AnnotationConfigApplicationContext context = + new AnnotationConfigApplicationContext(Main.class); + + PersonService service = context.getBean(PersonService.class); + + Person ivan = service.getByName("Ivan"); + System.out.println("name: " + ivan.getName() + " age: " + ivan.getAge()); + } +} diff --git a/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/dao/PersonDao.java b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/dao/PersonDao.java new file mode 100644 index 00000000..2a7e1903 --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/dao/PersonDao.java @@ -0,0 +1,8 @@ +package ru.otus.spring03.dao; + +import ru.otus.spring03.domain.Person; + +public interface PersonDao { + + Person findByName(String name); +} diff --git a/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/dao/PersonDaoSimple.java b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/dao/PersonDaoSimple.java new file mode 100644 index 00000000..64740885 --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/dao/PersonDaoSimple.java @@ -0,0 +1,12 @@ +package ru.otus.spring03.dao; + +import org.springframework.stereotype.Repository; +import ru.otus.spring03.domain.Person; + +@Repository +public class PersonDaoSimple implements PersonDao { + + public Person findByName(String name) { + return new Person(name, 18); + } +} diff --git a/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/domain/Person.java b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/domain/Person.java new file mode 100644 index 00000000..22fd88d6 --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/domain/Person.java @@ -0,0 +1,20 @@ +package ru.otus.spring03.domain; + +public class Person { + + private String name; + private int age; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } +} diff --git a/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/logging/LoggingAspect.java b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/logging/LoggingAspect.java new file mode 100644 index 00000000..946bf3a9 --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/logging/LoggingAspect.java @@ -0,0 +1,13 @@ +package ru.otus.spring03.logging; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; + +public class LoggingAspect { + + public void logBefore(JoinPoint joinPoint) { + System.out.println("Вызов метода : " + joinPoint.getSignature().getName()); + } +} diff --git a/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/service/PersonService.java b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/service/PersonService.java new file mode 100644 index 00000000..815f7c0a --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/service/PersonService.java @@ -0,0 +1,8 @@ +package ru.otus.spring03.service; + +import ru.otus.spring03.domain.Person; + +public interface PersonService { + + Person getByName(String name); +} diff --git a/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/service/PersonServiceImpl.java b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/service/PersonServiceImpl.java new file mode 100644 index 00000000..1c9ba93b --- /dev/null +++ b/2019-08/spring-03/spring-03-exercise/src/main/java/ru/otus/spring03/service/PersonServiceImpl.java @@ -0,0 +1,19 @@ +package ru.otus.spring03.service; + +import org.springframework.stereotype.Service; +import ru.otus.spring03.dao.PersonDao; +import ru.otus.spring03.domain.Person; + +@Service +public class PersonServiceImpl implements PersonService { + + private final PersonDao dao; + + public PersonServiceImpl(PersonDao dao) { + this.dao = dao; + } + + public Person getByName(String name) { + return dao.findByName(name); + } +} diff --git a/2019-08/spring-03/spring-03-solution/pom.xml b/2019-08/spring-03/spring-03-solution/pom.xml new file mode 100644 index 00000000..7a157288 --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + ru.otus + spring-03-solution + 1.0 + + + 1.8 + 1.8 + UTF-8 + + + + + org.springframework + spring-context + 5.1.9.RELEASE + + + + org.springframework + spring-aop + 5.1.9.RELEASE + + + org.aspectj + aspectjrt + 1.9.4 + + + org.aspectj + aspectjweaver + 1.9.4 + + + diff --git a/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/Main.java b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/Main.java new file mode 100644 index 00000000..c3cb2647 --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/Main.java @@ -0,0 +1,21 @@ +package ru.otus.spring03; + +import org.springframework.context.annotation.*; +import ru.otus.spring03.domain.Person; +import ru.otus.spring03.service.PersonService; + +@EnableAspectJAutoProxy +@Configuration +@ComponentScan +public class Main { + + public static void main(String[] args) { + AnnotationConfigApplicationContext context = + new AnnotationConfigApplicationContext(Main.class); + + PersonService service = context.getBean(PersonService.class); + + Person ivan = service.getByName("Ivan"); + System.out.println("name: " + ivan.getName() + " age: " + ivan.getAge()); + } +} diff --git a/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/dao/PersonDao.java b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/dao/PersonDao.java new file mode 100644 index 00000000..2a7e1903 --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/dao/PersonDao.java @@ -0,0 +1,8 @@ +package ru.otus.spring03.dao; + +import ru.otus.spring03.domain.Person; + +public interface PersonDao { + + Person findByName(String name); +} diff --git a/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/dao/PersonDaoSimple.java b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/dao/PersonDaoSimple.java new file mode 100644 index 00000000..64740885 --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/dao/PersonDaoSimple.java @@ -0,0 +1,12 @@ +package ru.otus.spring03.dao; + +import org.springframework.stereotype.Repository; +import ru.otus.spring03.domain.Person; + +@Repository +public class PersonDaoSimple implements PersonDao { + + public Person findByName(String name) { + return new Person(name, 18); + } +} diff --git a/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/domain/Person.java b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/domain/Person.java new file mode 100644 index 00000000..22fd88d6 --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/domain/Person.java @@ -0,0 +1,20 @@ +package ru.otus.spring03.domain; + +public class Person { + + private String name; + private int age; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } +} diff --git a/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/logging/LoggingAspect.java b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/logging/LoggingAspect.java new file mode 100644 index 00000000..6f9d1f43 --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/logging/LoggingAspect.java @@ -0,0 +1,16 @@ +package ru.otus.spring03.logging; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.stereotype.Component; + +@Aspect +@Component +public class LoggingAspect { + + @Before("execution(* ru.otus.spring03.dao.PersonDaoSimple.*(..))") + public void logBefore(JoinPoint joinPoint) { + System.out.println("Вызов метода : " + joinPoint.getSignature().getName()); + } +} diff --git a/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/service/PersonService.java b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/service/PersonService.java new file mode 100644 index 00000000..815f7c0a --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/service/PersonService.java @@ -0,0 +1,8 @@ +package ru.otus.spring03.service; + +import ru.otus.spring03.domain.Person; + +public interface PersonService { + + Person getByName(String name); +} diff --git a/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/service/PersonServiceImpl.java b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/service/PersonServiceImpl.java new file mode 100644 index 00000000..1c9ba93b --- /dev/null +++ b/2019-08/spring-03/spring-03-solution/src/main/java/ru/otus/spring03/service/PersonServiceImpl.java @@ -0,0 +1,19 @@ +package ru.otus.spring03.service; + +import org.springframework.stereotype.Service; +import ru.otus.spring03.dao.PersonDao; +import ru.otus.spring03.domain.Person; + +@Service +public class PersonServiceImpl implements PersonService { + + private final PersonDao dao; + + public PersonServiceImpl(PersonDao dao) { + this.dao = dao; + } + + public Person getByName(String name) { + return dao.findByName(name); + } +}