Добавление DI.
This commit is contained in:
parent
599d790171
commit
f3a1248c10
3
.idea/dictionaries/max.xml
Normal file
3
.idea/dictionaries/max.xml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<component name="ProjectDictionaryState">
|
||||||
|
<dictionary name="max" />
|
||||||
|
</component>
|
||||||
6
README.md
Normal file
6
README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
## Backend для приложения "Автоматизация работы библиотеки"
|
||||||
|
|
||||||
|
### Ограничения
|
||||||
|
|
||||||
|
Поскольку аутентификация и авторизация не реализованы, данное приложение можно использовать только в ограниченной среде (например внутри docker контейнера).
|
||||||
|
|
||||||
19
pom.xml
19
pom.xml
@ -37,19 +37,6 @@
|
|||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-resteasy-jsonb</artifactId>
|
<artifactId>quarkus-resteasy-jsonb</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-arc</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-resteasy</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-junit5</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.rest-assured</groupId>
|
<groupId>io.rest-assured</groupId>
|
||||||
<artifactId>rest-assured</artifactId>
|
<artifactId>rest-assured</artifactId>
|
||||||
@ -70,6 +57,12 @@
|
|||||||
<artifactId>validation-api</artifactId>
|
<artifactId>validation-api</artifactId>
|
||||||
<version>2.0.1.Final</version>
|
<version>2.0.1.Final</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.inject</groupId>
|
||||||
|
<artifactId>guice</artifactId>
|
||||||
|
<version>7.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
20
src/main/java/ru/cft/booklib/application/AppModule.java
Normal file
20
src/main/java/ru/cft/booklib/application/AppModule.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package ru.cft.booklib.application;
|
||||||
|
|
||||||
|
import com.google.inject.AbstractModule;
|
||||||
|
import ru.cft.booklib.service.BooksService;
|
||||||
|
import ru.cft.booklib.service.ReadersService;
|
||||||
|
import ru.cft.booklib.service.TransactionsService;
|
||||||
|
import ru.cft.booklib.service.impl.BooksServiceImpl;
|
||||||
|
import ru.cft.booklib.service.impl.ReadersServiceImpl;
|
||||||
|
import ru.cft.booklib.service.impl.TransactionsServiceImpl;
|
||||||
|
|
||||||
|
/** Модуль внедрения зависимостей. */
|
||||||
|
public class AppModule extends AbstractModule {
|
||||||
|
@Override
|
||||||
|
protected void configure() {
|
||||||
|
// Инициализируем сервисы.
|
||||||
|
bind(BooksService.class).to(BooksServiceImpl.class);
|
||||||
|
bind(ReadersService.class).to(ReadersServiceImpl.class);
|
||||||
|
bind(TransactionsService.class).to(TransactionsServiceImpl.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package ru.cft.booklib.application;
|
||||||
|
|
||||||
|
import com.google.inject.Guice;
|
||||||
|
import com.google.inject.Injector;
|
||||||
|
|
||||||
|
/** Добавление компонентов к контейнеру внедрения зависимостей. */
|
||||||
|
public class InjectionInitializer {
|
||||||
|
|
||||||
|
/** Инициализация внедрения зависимостей. */
|
||||||
|
public static void initDI() {
|
||||||
|
Guice.createInjector(new AppModule());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,9 +1,10 @@
|
|||||||
package ru.cft.booklib;
|
package ru.cft.booklib.application;
|
||||||
|
|
||||||
import io.quarkus.runtime.Quarkus;
|
import io.quarkus.runtime.Quarkus;
|
||||||
import io.quarkus.runtime.QuarkusApplication;
|
import io.quarkus.runtime.QuarkusApplication;
|
||||||
import io.quarkus.runtime.annotations.QuarkusMain;
|
import io.quarkus.runtime.annotations.QuarkusMain;
|
||||||
|
|
||||||
|
/** Класс для запуска приложения в IDE. */
|
||||||
@QuarkusMain
|
@QuarkusMain
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String... args) {
|
public static void main(String... args) {
|
||||||
@ -15,9 +16,10 @@ public class Main {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class MyApp implements QuarkusApplication {
|
public static class MyApp implements QuarkusApplication {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int run(String... args){
|
public int run(String... args){
|
||||||
|
InjectionInitializer.initDI();
|
||||||
|
|
||||||
Quarkus.waitForExit();
|
Quarkus.waitForExit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1,12 +1,35 @@
|
|||||||
package ru.cft.booklib.controller.impl;
|
package ru.cft.booklib.controller.impl;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.google.inject.Provider;
|
||||||
import ru.cft.booklib.controller.BooksApi;
|
import ru.cft.booklib.controller.BooksApi;
|
||||||
import ru.cft.booklib.model.Book;
|
import ru.cft.booklib.model.Book;
|
||||||
import ru.cft.booklib.model.BookCreate;
|
import ru.cft.booklib.model.BookCreate;
|
||||||
|
import ru.cft.booklib.service.BooksService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class BooksApiImpl implements BooksApi {
|
public class BooksApiImpl implements BooksApi {
|
||||||
|
// /*
|
||||||
|
private final Provider<BooksService> booksService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public BooksApiImpl(Provider<BooksService> booksService) {
|
||||||
|
this.booksService = booksService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Book bookPost(BookCreate bookCreate) {
|
||||||
|
return booksService.get().addBook(bookCreate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Book> booksGet() {
|
||||||
|
return booksService.get().getBooks();
|
||||||
|
}
|
||||||
|
// */
|
||||||
|
|
||||||
|
/*
|
||||||
@Override
|
@Override
|
||||||
public Book bookPost(BookCreate bookCreate) {
|
public Book bookPost(BookCreate bookCreate) {
|
||||||
return null;
|
return null;
|
||||||
@ -20,4 +43,5 @@ public class BooksApiImpl implements BooksApi {
|
|||||||
|
|
||||||
return List.of(book);
|
return List.of(book);
|
||||||
}
|
}
|
||||||
}
|
*/
|
||||||
|
}
|
||||||
15
src/main/java/ru/cft/booklib/service/BooksService.java
Normal file
15
src/main/java/ru/cft/booklib/service/BooksService.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package ru.cft.booklib.service;
|
||||||
|
|
||||||
|
import ru.cft.booklib.model.Book;
|
||||||
|
import ru.cft.booklib.model.BookCreate;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/** Сервис по работе с книгами. */
|
||||||
|
public interface BooksService {
|
||||||
|
/** Добавляет книгу в библиотеку. */
|
||||||
|
Book addBook(BookCreate bookCreate);
|
||||||
|
|
||||||
|
/** Возвращает список книг библиотеки. */
|
||||||
|
List<Book> getBooks();
|
||||||
|
}
|
||||||
5
src/main/java/ru/cft/booklib/service/ReadersService.java
Normal file
5
src/main/java/ru/cft/booklib/service/ReadersService.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package ru.cft.booklib.service;
|
||||||
|
|
||||||
|
/** Сервис по работе с читателями. */
|
||||||
|
public interface ReadersService {
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
package ru.cft.booklib.service;
|
||||||
|
|
||||||
|
/** Сервис по выдаче книг читателям. */
|
||||||
|
public interface TransactionsService {
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package ru.cft.booklib.service.impl;
|
||||||
|
|
||||||
|
import ru.cft.booklib.model.Book;
|
||||||
|
import ru.cft.booklib.model.BookCreate;
|
||||||
|
import ru.cft.booklib.service.BooksService;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
public class BooksServiceImpl implements BooksService {
|
||||||
|
/** ^^^ Удалить после реализации репозитория. */
|
||||||
|
private static final ConcurrentHashMap<Integer, Book> books = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
private static boolean isInit = false;
|
||||||
|
private static void init() {
|
||||||
|
if(isInit)
|
||||||
|
return;
|
||||||
|
|
||||||
|
isInit = true;
|
||||||
|
Book book = new Book();
|
||||||
|
book.id(1);
|
||||||
|
book.title("Java для начинающих");
|
||||||
|
book.authors(List.of("Иванов", "Петров"));
|
||||||
|
books.put(1, book);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Book addBook(BookCreate bookCreate) {
|
||||||
|
Book book = new Book();
|
||||||
|
|
||||||
|
book.setId(books.size() + 1);
|
||||||
|
book.setTitle(bookCreate.getTitle());
|
||||||
|
book.setAuthors(bookCreate.getAuthors());
|
||||||
|
|
||||||
|
books.put(book.getId(), book);
|
||||||
|
return book;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Book> getBooks() {
|
||||||
|
init();
|
||||||
|
return new ArrayList<>(books.values());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
package ru.cft.booklib.service.impl;
|
||||||
|
|
||||||
|
import ru.cft.booklib.service.ReadersService;
|
||||||
|
|
||||||
|
public class ReadersServiceImpl implements ReadersService {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
package ru.cft.booklib.service.impl;
|
||||||
|
|
||||||
|
import ru.cft.booklib.service.TransactionsService;
|
||||||
|
|
||||||
|
public class TransactionsServiceImpl implements TransactionsService {
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user