This project is a Spring Boot application following an MVC structure. App.java serves as the main entry point. SecurityConfig.java manages authentication, using Spring Security. MainController.java and AiController.java handle web requests, while UserService.java contains business logic for users. UserRepository.java is an in-memory store using HashMap. JwtUtil.java handles JWT authentication.
- Java 17
- Spring framework 3.2.2
- Spring security
- JSONWebToken (JWT)
- lombok
- Gemini API
API documentation: https://ai.google.dev/gemini-api/docs?hl=ru
mvn clean install && mvn spring-boot:runtree:
.
├── README.md
├── pom.xml
├── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── app
│ │ ├── App.java
│ │ ├── config
│ │ │ └── SecurityConfig.java
│ │ ├── controllers
│ │ │ ├── AiController.java
│ │ │ └── MainController.java
│ │ ├── dto
│ │ │ └── UserDto.java
│ │ ├── models
│ │ │ ├── Message.java
│ │ │ └── User.java
│ │ ├── repository
│ │ │ └── UserRepository.java
│ │ └── services
│ │ ├── GeminiService.java
│ │ ├── JwtUtil.java
│ │ └── UserService.java
│ └── resources
│ └── application.properties
└── target
├── classes
│ ├── application.properties
│ └── com
│ └── example
│ └── app
│ ├── App.class
│ ├── config
│ │ └── SecurityConfig.class
│ ├── controllers
│ │ ├── AiController.class
│ │ └── MainController.class
│ ├── dto
│ │ └── UserDto.class
│ ├── models
│ │ ├── Message.class
│ │ └── User.class
│ ├── repository
│ │ └── UserRepository.class
│ └── services
│ ├── GeminiService.class
│ ├── JwtUtil.class
│ └── UserService.class
├── fromzero-1.0-SNAPSHOT.jar
├── generated-sources
│ └── annotations
├── maven-archiver
│ └── pom.properties
└── maven-status
└── maven-compiler-plugin
└── compile
└── default-compile
├── createdFiles.lst
└── inputFiles.lst
POST /auth/register
{
"username": "user123",
"password": "securePassword"
}POST /auth/login
{
"username": "user123",
"password": "securePassword"
}GET /auth/profile
Key: Authorization Value: Bearer <your JWT token>
POST /api/message
your query
GET /api/messages