Template for web application with Spring 5 It provides support for
- REST features
- Securization
- Multilanguage
- HTTP calls
- Data Layer
- Swagger
- Error handling
- Logging
- Web Monitoring
- Life check
- DTO handling
As the project may need mapstruct previously for dtos creation, before running it you need to do:
$ mvn clean compile
Right button on the project > Run as > Spring Boot App
When eclipse asks for the class to run, select RestServicesApplication
Build the project using maven
$ mvn clean package -Pdocker [-Dmaven.test.skip=true]
Note: Never run the install command for a microservice, it does not make any sense to install locally a microservice jar
Go to com.greek.service.manager.impl.UserServiceLayerIT class and:
- Uncomment the line extracted();
- Run the test over this file only
- If everything is ok, check the table usuario in the DB and you will have the first user of the app in the field codigo_usuario
- Check the table organizacion you must see 3 rows (group, organization, venue)
- Check the table usuario_organizacion and you will have the user recently created linked to this organizations
- Check the table rol_usuario and you will have the user recently created linked to a specific role
- Check the table persona and you will have the person data related to this user
- Check the table persona_organizacion and you will have the person linked to this group previously created
Enter into target directory and run the resultant jar with the command:
$ java -jar <name of the jar>
If you are using linux OS, you have the utility script for compiling, packaging and image creation for docker script
$ ./createDocker.sh
Refer to the content of this file to know the manual steps for dockerization
You can find swagger in http[s]://[host]:[port]/[context]/swagger-ui.html
Example: http://localhost:9191/bank/swagger-ui.html
You can find actuator in in http[s]://[host]:[port]/actuator
Example: http://localhost:9191/actuator/health http://localhost:9191/actuator/info
Simon console is for monitoring response times of every endpoint, and you can find it in http[s]://[host]:[port]/performance-monitor/index.html
Example http://localhost:9191/performance-monitor/index.html
-noverify -Xms256m -Xmx256m -Xss256k -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+UseStringDeduplication -XX:+OptimizeStringConcat -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Duser.timezone=UTC -Duser.language=en
Use adoptopenjdk/openjdk11:x86_64-alpine-jre-11.0.11_9 image (fixed version)
docker run -d -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 9600:9600 -p 4560:4560 -v ${HOME}/elk-data:/var/lib/elasticsearch -v ${HOME}/logstash/conf.d:/etc/logstash/conf.d --name elk sebp/elk
Inside the logstash/conf.d/logstash.conf
input {
tcp {
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["http://192.168.0.104:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
}
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<param name="Encoding" value="UTF-8" />
<destination>127.0.0.1:4560</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<includeMdcKeyName>correlationId</includeMdcKeyName>
<includeMdcKeyName>username</includeMdcKeyName>
<customFields>{"app_name":"pegasus-rest-api", "app_port": "YourPort"}</customFields>
</encoder>
</appender>
If you have ideas for releases in the future, please add them here.