Two years of commercial experience. Now i'm middle Java Developer in a small company more than year. I'm working on security with tokens including LDAP(OpenLDAP, Active Directory). In the microservice architecture, I set up communication between services through the RabbitMQ, Minio file storage, a bit Docker and Docker Compose. I work simultaneously on 2 projects - an auction management system and a fraud detection system for a large European bank. Creating functionality, if required for the task, I go through the whole cycle: creating a database using Liquibase; creation of entity structures; spring rest crud with a full description in swagger, also protected by spring security, which can be extended with JPA Specification; full validation of input data, both regex and java for table filling data, also validation includes incorrect queries with detailed exception handling and formation of an array of user mistakes to prevent 500 errors and tell the user what needs to be corrected in the requests.
Wrote several modules that helped the customer track changes in important data: Status Logger - displays the status of the data download in percent and a list of errors after download; Report - generates a report on changes in the monitored data in html format in tabular form (subscription is implemented through Rest API); Notification - sends a report generated by the Report module using the SMTP protocol to the email.
> Writing automated tests with Mockito
> REST API
> Implemented authentication
> Integrated JWT technology
> Introduced custom implementation of JWT validation with filters, providers, and result
handlers.
> Added a Liquibase migration based on SQL scripts to create a database structure
> Business logic was described in services with Rest access by roles
> Divided the project into microservices with rest communication between them
> Implemented authentication
> Integrated JWT technology
> Custom JWT validation with filters, providers, and handlers of result
> Configured LDAP(Active Directory)
> Customized/Universalized exception hendling
> Support for Liquidbase migrations using the XML standard with a description of rollbacks and
static filling of tables when they are created
> Covered the project with swagger with a detailed description of the work of endpoints and
each parameter, reflecting server security access to each controller, including roles to each
endpoint
> Introduced Minio file storage into the project
> Set up a flexible search with filtering, including nested objects using JPA Specification
> Configured friendly exception handling with exact list of request errors for response to
Frontend
> Database enriching with validation and deduplication
> Microservice for logging the status of the enrichin process
> XLSX file parsing
> Subscribing to object updates for further email notification of its changes
> Refactoring individual parts of services to a Stream API. Set up service communication using RabbitMQ