Добавление 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>
|
||||
<artifactId>quarkus-resteasy-jsonb</artifactId>
|
||||
</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>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>rest-assured</artifactId>
|
||||
@ -70,6 +57,12 @@
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>2.0.1.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.inject</groupId>
|
||||
<artifactId>guice</artifactId>
|
||||
<version>7.0.0</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<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.QuarkusApplication;
|
||||
import io.quarkus.runtime.annotations.QuarkusMain;
|
||||
|
||||
/** Класс для запуска приложения в IDE. */
|
||||
@QuarkusMain
|
||||
public class Main {
|
||||
public static void main(String... args) {
|
||||
@ -15,9 +16,10 @@ public class Main {
|
||||
}
|
||||
|
||||
public static class MyApp implements QuarkusApplication {
|
||||
|
||||
@Override
|
||||
public int run(String... args){
|
||||
InjectionInitializer.initDI();
|
||||
|
||||
Quarkus.waitForExit();
|
||||
return 0;
|
||||
}
|
||||
@ -1,12 +1,35 @@
|
||||
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.model.Book;
|
||||
import ru.cft.booklib.model.BookCreate;
|
||||
import ru.cft.booklib.service.BooksService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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
|
||||
public Book bookPost(BookCreate bookCreate) {
|
||||
return null;
|
||||
@ -20,4 +43,5 @@ public class BooksApiImpl implements BooksApi {
|
||||
|
||||
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