From 448af502724cef380f4122ac6ef0992e3899dc9f Mon Sep 17 00:00:00 2001 From: Ekaterina Tarakanova <146315283+EkaterinaTarakanova@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:41:16 +0500 Subject: [PATCH 1/5] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index ac9e853..347759c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ Мой репозиторий с домашками по курсу Spring Boot Тараканова Екатерина, преподаватель Королёв Александр + +ДЗ по теме DI: +Дз по теме DI: +Реализовать приложение (не важно какая логика, так как основой упор идет на DI), в котором: +- используется DI через конструктор +- используется DI через поле +- используется DI через сеттеры +- создаются и внедряются два бина разных классов, но реализующих один интерфейс +- при создании и “разрушении” бина в лог выводится сообщение +(примечание: здесь вам не понадобятся контроллеры. Достаточно описать только то, что описано выше) From 64fdd7246d21984151ad897cb152c75fe64bb3e3 Mon Sep 17 00:00:00 2001 From: Ekaterina Tarakanova <146315283+EkaterinaTarakanova@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:41:36 +0500 Subject: [PATCH 2/5] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 347759c..a8c8ef7 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ Тараканова Екатерина, преподаватель Королёв Александр -ДЗ по теме DI: Дз по теме DI: Реализовать приложение (не важно какая логика, так как основой упор идет на DI), в котором: - используется DI через конструктор From bb3488a43b89ea6965e4c66dcc0f3c15bac030eb Mon Sep 17 00:00:00 2001 From: Ekaterina Tarakanova Date: Wed, 6 Mar 2024 13:48:12 +0500 Subject: [PATCH 3/5] 1_DI Homework --- README.md | 9 +++++ .../SpringBootProject/entity/Animal.java | 5 +++ .../example/SpringBootProject/entity/Cat.java | 11 ++++++ .../example/SpringBootProject/entity/Dog.java | 11 ++++++ .../services/ConstructorInjection.java | 32 ++++++++++++++++ .../services/FieldInjection.java | 30 +++++++++++++++ .../services/SetterInjection.java | 37 +++++++++++++++++++ 7 files changed, 135 insertions(+) create mode 100644 src/main/java/com/example/SpringBootProject/entity/Animal.java create mode 100644 src/main/java/com/example/SpringBootProject/entity/Cat.java create mode 100644 src/main/java/com/example/SpringBootProject/entity/Dog.java create mode 100644 src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java create mode 100644 src/main/java/com/example/SpringBootProject/services/FieldInjection.java create mode 100644 src/main/java/com/example/SpringBootProject/services/SetterInjection.java diff --git a/README.md b/README.md index a8c8ef7..67d44ac 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,12 @@ - создаются и внедряются два бина разных классов, но реализующих один интерфейс - при создании и “разрушении” бина в лог выводится сообщение (примечание: здесь вам не понадобятся контроллеры. Достаточно описать только то, что описано выше) + +Дз по теме DI: +Реализовать приложение (не важно какая логика, так как основой упор идет на DI), в котором: +- используется DI через конструктор +- используется DI через поле +- используется DI через сеттеры +- создаются и внедряются два бина разных классов, но реализующих один интерфейс +- при создании и “разрушении” бина в лог выводится сообщение +(примечание: здесь вам не понадобятся контроллеры. Достаточно описать только то, что описано выше) diff --git a/src/main/java/com/example/SpringBootProject/entity/Animal.java b/src/main/java/com/example/SpringBootProject/entity/Animal.java new file mode 100644 index 0000000..ea4a5e7 --- /dev/null +++ b/src/main/java/com/example/SpringBootProject/entity/Animal.java @@ -0,0 +1,5 @@ +package com.example.SpringBootProject.entity; + +public interface Animal { + void makeSound(); +} diff --git a/src/main/java/com/example/SpringBootProject/entity/Cat.java b/src/main/java/com/example/SpringBootProject/entity/Cat.java new file mode 100644 index 0000000..c61257d --- /dev/null +++ b/src/main/java/com/example/SpringBootProject/entity/Cat.java @@ -0,0 +1,11 @@ +package com.example.SpringBootProject.entity; + +import org.springframework.stereotype.Component; + +@Component +public class Cat implements Animal { + @Override + public void makeSound(){ + System.out.println("Мяу мяу"); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/SpringBootProject/entity/Dog.java b/src/main/java/com/example/SpringBootProject/entity/Dog.java new file mode 100644 index 0000000..51cdf21 --- /dev/null +++ b/src/main/java/com/example/SpringBootProject/entity/Dog.java @@ -0,0 +1,11 @@ +package com.example.SpringBootProject.entity; + +import org.springframework.stereotype.Component; + +@Component +public class Dog implements Animal { + @Override + public void makeSound() { + System.out.println("Гав гав"); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java b/src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java new file mode 100644 index 0000000..621a341 --- /dev/null +++ b/src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java @@ -0,0 +1,32 @@ +package com.example.SpringBootProject.services; + + +import com.example.SpringBootProject.entity.Animal; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + + +@Log4j2 +@RequiredArgsConstructor +public class ConstructorInjection { + private final Animal dog; + private final Animal cat; + + @PostConstruct + private void init(){ + log.info("ConstructInjection is started"); + } + + @PreDestroy + private void destroy(){ + log.info("ConstructInjection is destroyed"); + } + + private void animalMakeNoise(){ + cat.makeSound(); + dog.makeSound(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/example/SpringBootProject/services/FieldInjection.java b/src/main/java/com/example/SpringBootProject/services/FieldInjection.java new file mode 100644 index 0000000..cdf0fbf --- /dev/null +++ b/src/main/java/com/example/SpringBootProject/services/FieldInjection.java @@ -0,0 +1,30 @@ +package com.example.SpringBootProject.services; + +import com.example.SpringBootProject.entity.Animal; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; + +@Log4j2 +public class FieldInjection { + @Autowired + private Animal dog; + @Autowired + private Animal cat; + + @PostConstruct + private void init(){ + log.info("FieldInjection is started"); + } + + @PreDestroy + private void destroy(){ + log.info("FieldInjection is destroyed"); + } + + private void animalMakeNoise(){ + cat.makeSound(); + dog.makeSound(); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/SpringBootProject/services/SetterInjection.java b/src/main/java/com/example/SpringBootProject/services/SetterInjection.java new file mode 100644 index 0000000..1fb23b5 --- /dev/null +++ b/src/main/java/com/example/SpringBootProject/services/SetterInjection.java @@ -0,0 +1,37 @@ +package com.example.SpringBootProject.services; + +import com.example.SpringBootProject.entity.Animal; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; + +@Log4j2 +public class SetterInjection { + private Animal cat; + private Animal dog; + + @PostConstruct + private void init(){ + log.info("SetterInjection is started"); + } + + @PreDestroy + private void destroy(){ + log.info("SetterInjection is destroyed"); + } + @Autowired + private void setDog(Animal dog){ + this.dog = dog; + } + + @Autowired + private void setCat(Animal cat){ + this.cat = cat; + } + + private void animalMakeNoise(){ + cat.makeSound(); + dog.makeSound(); + } +} \ No newline at end of file From 3fb745b5405826a7cd0b7bf662d0036f8ce94597 Mon Sep 17 00:00:00 2001 From: Ekaterina Tarakanova <146315283+EkaterinaTarakanova@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:50:01 +0500 Subject: [PATCH 4/5] Update README.md --- README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/README.md b/README.md index 67d44ac..f1eba84 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,6 @@ Тараканова Екатерина, преподаватель Королёв Александр -Дз по теме DI: -Реализовать приложение (не важно какая логика, так как основой упор идет на DI), в котором: -- используется DI через конструктор -- используется DI через поле -- используется DI через сеттеры -- создаются и внедряются два бина разных классов, но реализующих один интерфейс -- при создании и “разрушении” бина в лог выводится сообщение -(примечание: здесь вам не понадобятся контроллеры. Достаточно описать только то, что описано выше) Дз по теме DI: Реализовать приложение (не важно какая логика, так как основой упор идет на DI), в котором: From 2e5d7510cf4e8465f232ef22aa3e35267a37370b Mon Sep 17 00:00:00 2001 From: Ekaterina Tarakanova Date: Sun, 17 Mar 2024 14:55:58 +0500 Subject: [PATCH 5/5] Added annotation and log.info --- src/main/java/com/example/SpringBootProject/entity/Cat.java | 4 +++- src/main/java/com/example/SpringBootProject/entity/Dog.java | 4 +++- .../SpringBootProject/services/ConstructorInjection.java | 3 ++- .../example/SpringBootProject/services/FieldInjection.java | 2 ++ .../example/SpringBootProject/services/SetterInjection.java | 2 ++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/SpringBootProject/entity/Cat.java b/src/main/java/com/example/SpringBootProject/entity/Cat.java index c61257d..fc02eb5 100644 --- a/src/main/java/com/example/SpringBootProject/entity/Cat.java +++ b/src/main/java/com/example/SpringBootProject/entity/Cat.java @@ -1,11 +1,13 @@ package com.example.SpringBootProject.entity; +import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Component; @Component +@Log4j2 public class Cat implements Animal { @Override public void makeSound(){ - System.out.println("Мяу мяу"); + log.info("Мяу мяу"); } } \ No newline at end of file diff --git a/src/main/java/com/example/SpringBootProject/entity/Dog.java b/src/main/java/com/example/SpringBootProject/entity/Dog.java index 51cdf21..cbdbefc 100644 --- a/src/main/java/com/example/SpringBootProject/entity/Dog.java +++ b/src/main/java/com/example/SpringBootProject/entity/Dog.java @@ -1,11 +1,13 @@ package com.example.SpringBootProject.entity; +import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Component; @Component +@Log4j2 public class Dog implements Animal { @Override public void makeSound() { - System.out.println("Гав гав"); + log.info("Гав гав"); } } \ No newline at end of file diff --git a/src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java b/src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java index 621a341..047f526 100644 --- a/src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java +++ b/src/main/java/com/example/SpringBootProject/services/ConstructorInjection.java @@ -6,9 +6,11 @@ import jakarta.annotation.PreDestroy; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Service; @Log4j2 +@Service @RequiredArgsConstructor public class ConstructorInjection { private final Animal dog; @@ -28,5 +30,4 @@ private void animalMakeNoise(){ cat.makeSound(); dog.makeSound(); } - } \ No newline at end of file diff --git a/src/main/java/com/example/SpringBootProject/services/FieldInjection.java b/src/main/java/com/example/SpringBootProject/services/FieldInjection.java index cdf0fbf..3de1c3b 100644 --- a/src/main/java/com/example/SpringBootProject/services/FieldInjection.java +++ b/src/main/java/com/example/SpringBootProject/services/FieldInjection.java @@ -5,8 +5,10 @@ import jakarta.annotation.PreDestroy; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; @Log4j2 +@Service public class FieldInjection { @Autowired private Animal dog; diff --git a/src/main/java/com/example/SpringBootProject/services/SetterInjection.java b/src/main/java/com/example/SpringBootProject/services/SetterInjection.java index 1fb23b5..278841b 100644 --- a/src/main/java/com/example/SpringBootProject/services/SetterInjection.java +++ b/src/main/java/com/example/SpringBootProject/services/SetterInjection.java @@ -5,8 +5,10 @@ import jakarta.annotation.PreDestroy; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; @Log4j2 +@Service public class SetterInjection { private Animal cat; private Animal dog;