diff --git a/2025-05/spring-01/.gitignore b/2025-05/spring-01/.gitignore new file mode 100644 index 00000000..4ea52072 --- /dev/null +++ b/2025-05/spring-01/.gitignore @@ -0,0 +1,24 @@ +target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ diff --git a/2025-05/spring-01/pom.xml b/2025-05/spring-01/pom.xml new file mode 100644 index 00000000..6658aaa0 --- /dev/null +++ b/2025-05/spring-01/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + ru.otus + spring-01 + 1.0 + + pom + + + spring-01-exercise + spring-01-solution + + diff --git a/2025-05/spring-01/spring-01-exercise/pom.xml b/2025-05/spring-01/spring-01-exercise/pom.xml new file mode 100644 index 00000000..8d537c40 --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + ru.otus + spring-01-exercise + 1.0 + + + 17 + 17 + UTF-8 + + + + + + diff --git a/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/Main.java b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..e3201a16 --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,17 @@ +package ru.otus.spring; + +//import org.springframework.context.support.ClassPathXmlApplicationContext; +import ru.otus.spring.domain.Person; + +public class Main { + + public static void main(String[] args) { + // TODO: создайте здесь класс контекста + + // TODO: Получите Person Service + + // Получите Person "Ivan" + Person ivan = null; + System.out.println("name: " + ivan.getName() + " age: " + ivan.getAge()); + } +} diff --git a/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/dao/PersonDao.java b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/dao/PersonDao.java new file mode 100644 index 00000000..d33939bd --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/dao/PersonDao.java @@ -0,0 +1,8 @@ +package ru.otus.spring.dao; + +import ru.otus.spring.domain.Person; + +public interface PersonDao { + + Person findByName(String name); +} diff --git a/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/dao/PersonDaoSimple.java b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/dao/PersonDaoSimple.java new file mode 100644 index 00000000..7f7c97c6 --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/dao/PersonDaoSimple.java @@ -0,0 +1,10 @@ +package ru.otus.spring.dao; + +import ru.otus.spring.domain.Person; + +public class PersonDaoSimple implements PersonDao { + + public Person findByName(String name) { + return new Person(name, 18); + } +} diff --git a/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/domain/Person.java b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..96c835fa --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,29 @@ +package ru.otus.spring.domain; + +public class Person { + + private final String name; + + private final int age; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + @Override + public String toString() { + return "Person{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/service/PersonService.java b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/service/PersonService.java new file mode 100644 index 00000000..9b83e7de --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/service/PersonService.java @@ -0,0 +1,8 @@ +package ru.otus.spring.service; + +import ru.otus.spring.domain.Person; + +public interface PersonService { + + Person getByName(String name); +} diff --git a/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/service/PersonServiceImpl.java b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/service/PersonServiceImpl.java new file mode 100644 index 00000000..794c29dd --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/src/main/java/ru/otus/spring/service/PersonServiceImpl.java @@ -0,0 +1,17 @@ +package ru.otus.spring.service; + +import ru.otus.spring.dao.PersonDao; +import ru.otus.spring.domain.Person; + +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/2025-05/spring-01/spring-01-exercise/src/main/resources/spring-context.xml b/2025-05/spring-01/spring-01-exercise/src/main/resources/spring-context.xml new file mode 100644 index 00000000..2cb9eabe --- /dev/null +++ b/2025-05/spring-01/spring-01-exercise/src/main/resources/spring-context.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/2025-05/spring-01/spring-01-solution/pom.xml b/2025-05/spring-01/spring-01-solution/pom.xml new file mode 100644 index 00000000..5f99b537 --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + ru.otus + spring-01-solution + 1.0 + + + 17 + 17 + UTF-8 + 6.2.3 + 3.3.1 + 10.15.0 + https://raw.githubusercontent.com/OtusTeam/Spring/master/checkstyle.xml + + + + + + org.springframework + spring-context + ${spring.version} + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle-plugin.version} + + + com.puppycrawl.tools + checkstyle + ${checkstyle.version} + + + + ${checkstyle.config.url} + + + + + check + + + + + + + diff --git a/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/Main.java b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..f5b2fafb --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,20 @@ +package ru.otus.spring; + +import org.springframework.context.support.ClassPathXmlApplicationContext; +import ru.otus.spring.domain.Person; +import ru.otus.spring.service.PersonService; + +public class Main { + + public static void main(String[] args) { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/spring-context.xml"); + PersonService service = context.getBean(PersonService.class); + Person ivan = service.getByName("Ivan"); + System.out.println("name: " + ivan.getName() + " age: " + ivan.getAge()); + + // Данная операция, в принципе не нужна. + // Мы не работаем пока что с БД, а Spring Boot сделает закрытие за нас + // Подробности - через пару занятий + context.close(); + } +} diff --git a/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/dao/PersonDao.java b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/dao/PersonDao.java new file mode 100644 index 00000000..d33939bd --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/dao/PersonDao.java @@ -0,0 +1,8 @@ +package ru.otus.spring.dao; + +import ru.otus.spring.domain.Person; + +public interface PersonDao { + + Person findByName(String name); +} diff --git a/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/dao/PersonDaoSimple.java b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/dao/PersonDaoSimple.java new file mode 100644 index 00000000..7f7c97c6 --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/dao/PersonDaoSimple.java @@ -0,0 +1,10 @@ +package ru.otus.spring.dao; + +import ru.otus.spring.domain.Person; + +public class PersonDaoSimple implements PersonDao { + + public Person findByName(String name) { + return new Person(name, 18); + } +} diff --git a/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/domain/Person.java b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..96c835fa --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,29 @@ +package ru.otus.spring.domain; + +public class Person { + + private final String name; + + private final int age; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + @Override + public String toString() { + return "Person{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/service/PersonService.java b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/service/PersonService.java new file mode 100644 index 00000000..9b83e7de --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/service/PersonService.java @@ -0,0 +1,8 @@ +package ru.otus.spring.service; + +import ru.otus.spring.domain.Person; + +public interface PersonService { + + Person getByName(String name); +} diff --git a/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/service/PersonServiceImpl.java b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/service/PersonServiceImpl.java new file mode 100644 index 00000000..794c29dd --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/src/main/java/ru/otus/spring/service/PersonServiceImpl.java @@ -0,0 +1,17 @@ +package ru.otus.spring.service; + +import ru.otus.spring.dao.PersonDao; +import ru.otus.spring.domain.Person; + +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/2025-05/spring-01/spring-01-solution/src/main/resources/spring-context.xml b/2025-05/spring-01/spring-01-solution/src/main/resources/spring-context.xml new file mode 100644 index 00000000..94af3327 --- /dev/null +++ b/2025-05/spring-01/spring-01-solution/src/main/resources/spring-context.xml @@ -0,0 +1,13 @@ + + + + + + + + + +