Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

SpringBoot + REST API + MySQL

This example relies on the SpringBoot to create a REST API and connecting to a MySQL database using JPA, with a sample web application and a command line client.

The basic structure of a SpringBoot project can be initialized using Spring initializr at https://start.spring.io/.

Launching the application

First, check all the required dependencies specified by the pom.xml file and the database configuration contained in src/main/resources/application.properties file.

Now, run the following command to check to download all dependencies and check that everything correctly compiles

 mvn compile

Make sure that the MySQL database was correctly configured before connecting the application to use it. Use the contents of the file src/main/resources/dbsetup.sql to create the database, an specific user 'spq' (pass: 'spq') for the application and grant privileges to that user. If you are using the command line client for MySQL you could run the following command

 mysql –uroot -p < src/main/resources/dbsetup.sql

otherwise you could use the contents of the file in any other MySQL client you are using.

Now, launch the server using the following command

mvn spring-boot:run

If there are no errors, you should get a running web application serving its contents at http://localhost:8080/. You can press Ctrl+C to stop the running application.

REST API

The application exposes a REST API, which is used by the web application, which is implemented in the BookController class. To execute these methods, you may install POSTman app or CURL command line tool. For example, some methods are

Retrieves all the registered books

GET http://localhost:8080/api/books

Adds a new book to the database

POST http://localhost:8080/api/books
Content-Type: application/json
{
"title": "Spring Boot in Action",
"author": "Craig Walls",
"isbn": "9781617292545"
}

Removes a previously registered book

DELETE http://localhost:8080/api/books/1

To see the full list of methods from the REST API, you can visit Swagger interface at: http://localhost:8080/swagger-ui.html. Check the annotations in the BookController class, the required dependencies in the pom.xml file and the application.properties file for its configuration

Command line client

There is a sample REST API client implementation using the SpringBoot REST client libraries in class BookManager.java. You can launch the client using the following Maven command (check)

mvn exec:java

See section in pom.xml to see how this command was configured to work.

Packaging the application

Application can be packaged executing the following command

mvn package

including all the SpringBoot required libraries inside the target/rest-api-0.0.1-SNAPSHOT.jar, which can be distributed.

Once packaged, the server can be launched with

java -jar rest-api-0.0.1-SNAPSHOT.jar

and the sample client by running, as SpringBoot changes the way the default Java loader

java -cp rest-api-0.0.1-SNAPSHOT.jar -Dloader.main=com.example.restapi.client.BookManager org.springframework.boot.loader.launch.PropertiesLauncher localhost 8080

Therefore, in a real development, it would be advisable to create different Maven projects for server and client applications, easing distribution and manteinance of each application separately.

Gathering performance metrics

In SpringBoot, performance metrics can be enabled. For that:

  1. Declare the following dependency in pom.xml:
    <!-- Access metrics at: http://localhost:8080/actuator/metrics -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. Add the following lines to application.propertiesconfiguration file:
    # Enable metrics
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.endpoint.metrics.enabled=true
    

Metrics endpoint: 👉 http://localhost:8080/actuator/metrics

Example sub-metric (e.g. JVM memory): 👉 http://localhost:8080/actuator/metrics/jvm.memory.used

Check the documentation about how to use a Java Profile, e.g. VisualVM Java profiler.

References

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages