# Getting Started

![Java Design patterns](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/banner.png)

[![Nullable labs](https://img.shields.io/badge/made%20by-Nullables%20Labs-blue.svg?style=flat-square\&longCache=true\&logo=data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIwIDMwMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNOTguODI0IDE0OS40OThjMCAxMi41Ny0yLjM1NiAyNC41ODItNi42MzcgMzUuNjM3LTQ5LjEtMjQuODEtODIuNzc1LTc1LjY5Mi04Mi43NzUtMTM0LjQ2IDAtMTcuNzgyIDMuMDkxLTM0LjgzOCA4Ljc0OS01MC42NzVhMTQ5LjUzNSAxNDkuNTM1IDAgMCAxIDQxLjEyNCAxMS4wNDYgMTA3Ljg3NyAxMDcuODc3IDAgMCAwLTcuNTIgMzkuNjI4YzAgMzYuODQyIDE4LjQyMyA2OS4zNiA0Ni41NDQgODguOTAzLjMyNiAzLjI2NS41MTUgNi41Ny41MTUgOS45MjF6TTY3LjgyIDE1LjAxOGM0OS4xIDI0LjgxMSA4Mi43NjggNzUuNzExIDgyLjc2OCAxMzQuNDggMCA4My4xNjgtNjcuNDIgMTUwLjU4OC0xNTAuNTg4IDE1MC41ODh2LTQyLjM1M2M1OS43NzggMCAxMDguMjM1LTQ4LjQ1OSAxMDguMjM1LTEwOC4yMzUgMC0zNi44NS0xOC40My02OS4zOC00Ni41NjItODguOTI3YTk5Ljk0OSA5OS45NDkgMCAwIDEtLjQ5Ny05Ljg5NyA5OC41MTIgOTguNTEyIDAgMCAxIDYuNjQ0LTM1LjY1NnptMTU1LjI5MiAxODIuNzE4YzE3LjczNyAzNS41NTggNTQuNDUgNTkuOTk3IDk2Ljg4OCA1OS45OTd2NDIuMzUzYy02MS45NTUgMC0xMTUuMTYyLTM3LjQyLTEzOC4yOC05MC44ODZhMTU4LjgxMSAxNTguODExIDAgMCAwIDQxLjM5Mi0xMS40NjR6bS0xMC4yNi02My41ODlhOTguMjMyIDk4LjIzMiAwIDAgMS00My40MjggMTQuODg5QzE2OS42NTQgNzIuMjI0IDIyNy4zOSA4Ljk1IDMwMS44NDUuMDAzYzQuNzAxIDEzLjE1MiA3LjU5MyAyNy4xNiA4LjQ1IDQxLjcxNC01MC4xMzMgNC40Ni05MC40MzMgNDMuMDgtOTcuNDQzIDkyLjQzem01NC4yNzgtNjguMTA1YzEyLjc5NC04LjEyNyAyNy41NjctMTMuNDA3IDQzLjQ1Mi0xNC45MTEtLjI0NyA4Mi45NTctNjcuNTY3IDE1MC4xMzItMTUwLjU4MiAxNTAuMTMyLTIuODQ2IDAtNS42NzMtLjA4OC04LjQ4LS4yNDNhMTU5LjM3OCAxNTkuMzc4IDAgMCAwIDguMTk4LTQyLjExOGMuMDk0IDAgLjE4Ny4wMDguMjgyLjAwOCA1NC41NTcgMCA5OS42NjUtNDAuMzczIDEwNy4xMy05Mi44Njh6IiBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KPC9zdmc+) ](https://nullables.io/)[![Java patterns](https://img.shields.io/badge/project-JavaPatterns-blue.svg?style=flat-square) ](https://github.com/AlexRogalskiy/java-patterns/)[![Java patterns](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/awesome.svg) ](https://alexander-rogalsky.gitbook.io/java-patterns/)[![Java patterns](https://badges.frapsoft.com/os/v3/open-source.png)](https://github.com/AlexRogalskiy/java-patterns/)

[![GitHub version](https://badge.fury.io/gh/AlexRogalskiy%2Fjava-patterns.svg)](https://badge.fury.io/gh/AlexRogalskiy%2Fjava-patterns) ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/AlexRogalskiy/java-patterns) ![GitHub Release Date](https://img.shields.io/github/release-date/AlexRogalskiy/java-patterns) ![Lines of code](https://tokei.rs/b1/github/AlexRogalskiy/java-patterns?category=lines) ![GitHub closed issues](https://img.shields.io/github/issues-closed/AlexRogalskiy/java-patterns) ![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/AlexRogalskiy/java-patterns) ![GitHub repo size](https://img.shields.io/github/repo-size/AlexRogalskiy/java-patterns) ![GitHub last commit](https://img.shields.io/github/last-commit/AlexRogalskiy/java-patterns) ![GitHub](https://img.shields.io/github/license/AlexRogalskiy/java-patterns) ![GitHub language count](https://img.shields.io/github/languages/count/AlexRogalskiy/java-patterns) ![GitHub search hit counter](https://img.shields.io/github/search/AlexRogalskiy/java-patterns/goto) ![GitHub Repository branches](https://badgen.net/github/branches/AlexRogalskiy/java-patterns) ![GitHub Repository dependents](https://badgen.net/github/dependents-repo/AlexRogalskiy/java-patterns)

[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#github.com/AlexRogalskiy/java-patterns/) [![first-timers-only Friendly](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](http://www.firsttimersonly.com/) [![Open Source Helpers](https://www.codetriage.com/alexrogalskiy/java-patterns/badges/users.svg)](https://www.codetriage.com/alexrogalskiy/java-patterns) [![The Changelog](https://img.shields.io/badge/The%20Changelog-%23363-61c192.svg)](https://changelog.com/jsparty) [![Discuss](https://img.shields.io/badge/-Discuss-blue)](https://github.com/AlexRogalskiy/java-patterns/discussions) [![Sourcegraph](https://sourcegraph.com/github.com/AlexRogalskiy/java-patterns/-/badge.svg)](https://sourcegraph.com/github.com/AlexRogalskiy/java-patterns?badge) [![DOI](https://zenodo.org/badge/329967283.svg)](https://zenodo.org/badge/latestdoi/329967283) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fjava-patterns.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fjava-patterns?ref=badge_shield) [![Renovatebot](https://badgen.net/badge/renovate/enabled/green?cache=300)](https://renovatebot.com/) [![Dependabot](https://img.shields.io/badge/dependabot-enabled-1f8ceb.svg?style=flat-square)](https://dependabot.com/) [![NewReleases](https://newreleases.io/badge.svg)](https://newreleases.io/github/AlexRogalskiy/java-patterns) [![Hits-of-Code](https://hitsofcode.com/github/alexrogalskiy/java-patterns?branch=master)](https://hitsofcode.com/github/alexrogalskiy/java-patterns?branch=master/view?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/97bd71c53e8145a264ec/maintainability)](https://codeclimate.com/github/AlexRogalskiy/java-patterns/maintainability) [![ComVer](https://img.shields.io/badge/ComVer-compliant-brightgreen.svg)](https://github.com/AlexRogalskiy/java-patterns/tags) [![GitHub Super-Linter](https://github.com/alexrogalskiy/java-patterns/workflows/Lint%20Code%20Base/badge.svg)](https://github.com/marketplace/actions/super-linter) [![Documentation Status](https://readthedocs.org/projects/java-patterns/badge/?version=latest)](https://java-patterns.readthedocs.io/en/latest/?badge=latest) [![NetflixOSS Lifecycle](https://img.shields.io/osslifecycle/AlexRogalskiy/java-patterns.svg)](https://alexander-rogalsky.gitbook.io/java-patterns/readme) [![CI](https://github.com/AlexRogalskiy/java-patterns/workflows/CI/badge.svg)](https://github.com/AlexRogalskiy/java-patterns/actions/workflows/build.yml) [![first-timers-only](https://img.shields.io/badge/first--timers--only-friendly-blue.svg?style=flat-square)](https://www.firsttimersonly.com/)

## 🎹 *Table of contents*

* [Java Design Patterns](#java-design-patterns)
  * [*Table of contents*](#-table-of-contents)
  * [*Summary*](#-summary)
  * [*Documentation*](#-documentation)
  * [*Kubernetes*](#-kubernetes)
  * [*Statistics*](#-statistics)
  * [*Versioning*](#-versioning)
  * [*Authors*](#-authors)
  * [*Contributing*](#-contributing)
  * [*Visitor stats*](#-visitor-stats)
  * [*Licensing*](#-licensing)
  * [*Development Support*](#-development-support)
  * [*Acknowledgement*](#-acknowledgement)
  * [*OpenGraph Card*](#-opengraph-card)
  * [*Feeds and Podcasts*](#-feeds-and-podcasts)
    * [*Reddit posts*](#reddit-posts)
    * [*InfoWorld posts*](#infoworld-posts)
    * [*Let's talk posts*](#lets-talk-posts)
    * [*Random thoughts posts*](#random-thoughts-posts)
    * [*Better code posts*](#better-code-posts)
    * [*Inside Java posts*](#inside-java-posts)
    * [*Java programmer posts*](#java-programmer-posts)
    * [*Dreamix posts*](#dreamix-posts)
    * [*Plumbr posts*](#plumbr-posts)
    * [*Thorben Janssen posts*](#thorben-janssen-posts)
    * [*Redhat posts*](#redhat-posts)
    * [*JavaCodeGeeks posts*](#javacodegeeks-posts)
    * [*DevCases posts*](#devcases-posts)

[*(back to top)*](#java-design-patterns)

## ☝ *Summary*

![Java](https://img.shields.io/badge/java-%23ED8B00.svg?logo=java\&logoColor=white) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://img.shields.io/badge/Project%20Status-Active-brightgreen) ](https://www.repostatus.org/#active)[![Project created status](https://badges.pufler.dev/created/AlexRogalskiy/java-patterns) ](https://badges.pufler.dev)[![Project updated status](https://badges.pufler.dev/updated/AlexRogalskiy/java-patterns)](https://badges.pufler.dev)

***Java Design Patterns*** is intended to provide various use case scenarios and architectural concepts on prototyping adaptive applications.

```
mkdocs.yml    # Configuration file.
docs/
    readme.md  # General information
    summary.md  # Table of contents
    units/
        design-patterns.md # Design patterns and architectural concepts
        scenarios.md # Scenarios in practice
        use-cases.md # Typical use cases
    user-guide/
        changelog.md # Changelog page
        code_of_conduct.md # Code of conduct page
        code_owners.md # Code owners page
        dependency.md # Dependency page
        description.md # Description page
        faq.md # FAQ page
        getting-started.md # Getting started page
        troubleshooting.md # Troubleshooting page
        upgrade.md # Upgrade page
    reporting/
        info.md # Informational page
        issue_template.md # Issue template page
        bug_report.md # Bug report template
        custom_report.md # Custom report template
        feature_request_template.md # Feature request template
        pull_request_template.md # Pull request template
    contributing/
        info.md # Contributing page
    links/
        info.md # Links page
```

[*(back to top)*](#java-design-patterns)

## 📝 *Documentation*

The Website documentation is provided by [gitbook](https://www.gitbook.com/) and can be discovered at url:

[***Java Patterns***](https://alexander-rogalsky.gitbook.io/java-patterns)

To enable documentation serving at ***localhost*** you can run the following script

```shell
./scripts/build-docs.sh
```

otherwise, the next steps should be considered:

1\) Install/upgrade ***pip*** command-line utility:

```shell
pip install --upgrade pip
```

or if you need to install ***pip*** for the first time:

```shell
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
python get-pip.py
```

2\) Install the ***mkdocs*** package using pip:

```shell
pip install mkdocs
```

or more conveniently for Windows subsystem:

```shell
python -m pip install mkdocs --quiet
python -m mkdocs
```

3\) Install the material theme for the website:

```shell
python -m pip install mkdocs-material --quiet
python -m pip install markdown-include --quiet
...
(see requirements.txt)
...
```

4\) Start the server at ***localhost*** by running the following command:

```shell
python -m mkdocs build --clean --config-file mkdocs.yml
python -m mkdocs serve --verbose --dirtyreload
```

5\) Deploy to GitHub pages:

```shell
python -m mkdocs --verbose gh-deploy --force --remote-branch gh-pages
```

5\) Open up [localhost](http://127.0.0.1:8000/) in browser to get the default documentation homepage.

[*(back to top)*](#java-design-patterns)

## 🧶 *Kubernetes*

Running k8s cluster with tilt command by acquiring k8s deployment configuration:

```shell
tilt up
```

Shutting down k8s cluster with provisioned resources removal:

```shell
tilt down --delete-namespaces
```

[*(back to top)*](#java-design-patterns)

## ⏰ *Statistics*

![Documentation PageSpeed result dashboard](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/reports/pagespeedresultmobile.svg)

[*(back to top)*](#java-design-patterns)

## 📝 *Versioning*

The project uses [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/AlexRogalskiy/java-patterns/tags).

[*(back to top)*](#java-design-patterns)

## 🌹 *Authors*

***Java Patterns*** is maintained by the following GitHub team-members:

* [![Author](https://img.shields.io/badge/author-AlexRogalskiy-FB8F0A)](https://github.com/AlexRogalskiy)

with community support please contact with us if you have some question or proposition.

[*(back to top)*](#java-design-patterns)

## 💕 *Contributing*

[![Contributors Display](https://badges.pufler.dev/contributors/AlexRogalskiy/java-patterns?size=50\&padding=5\&bots=true)](https://badges.pufler.dev)

Please read [CONTRIBUTING.md](https://github.com/AlexRogalskiy/java-patterns/blob/master/docs/CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us ([emoji key](https://allcontributors.org/docs/en/emoji-key)).

More on information on project contributions can be found at [CHANGELOG.md](https://github.com/AlexRogalskiy/java-patterns/blob/master/docs/CHANGELOG.md).

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome!

![GitHub contributors](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/contributors.png)

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) ![Github contributors](https://img.shields.io/github/all-contributors/AlexRogalskiy/java-patterns)

See also the list of [contributors](https://github.com/AlexRogalskiy/java-patterns/graphs/contributors) who participated in this project.

[![Edit with Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/AlexRogalskiy/java-patterns)

***Java Design Patterns*** has experimental support for *Gitpod*, a pre-configured development environment that runs in your browser. To use *Gitpod*, click the button below and sign in with GitHub. *Gitpod* also offers a browser add-on, though it is not required.

[![Open in CodeSandbox](https://img.shields.io/badge/Open%20in-CodeSandbox-blue?style=flat-square\&logo=codesandbox)](https://githubbox.com/AlexRogalskiy/java-patterns)

[*(back to top)*](#java-design-patterns)

## 🚨 *Visitor stats*

[![GitHub page hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FAlexRogalskiy%2Fjava-patterns\&count_bg=%2379C83D\&title_bg=%23555555\&icon=\&icon_color=%23E7E7E7\&title=hits\&edge_flat=true)](https://hits.seeyoufarm.com)

![GitHub stars](https://img.shields.io/github/stars/AlexRogalskiy/java-patterns?style=social) ![GitHub forks](https://img.shields.io/github/forks/AlexRogalskiy/java-patterns?style=social) ![GitHub watchers](https://img.shields.io/github/watchers/AlexRogalskiy/java-patterns?style=social)

[*(back to top)*](#java-design-patterns)

## ⚽ *Licensing*

***Java Patterns*** is distributed under LGPL version 3 or later, \[[License](https://github.com/AlexRogalskiy/java-patterns/blob/master/LICENSE.txt)]. LGPLv3 is additional permissions on top of GPLv3.

![image](https://user-images.githubusercontent.com/19885116/48661948-6cf97e80-ea7a-11e8-97e7-b45332a13e49.png)

[*(back to top)*](#java-design-patterns)

## 🌟 *Development Support*

Like ![Java Design patterns](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/icon.png) and ***Java Patterns*** ? Consider buying me a coffee :)

[![Become a Patron](https://img.shields.io/badge/Become_Patron-Support_me_on_Patreon-blue.svg?style=flat-square\&logo=patreon\&color=e64413)](https://www.patreon.com/alexrogalskiy) [![Buy Me A Coffee](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellow.svg?logo=buy%20me%20a%20coffee)](https://www.buymeacoffee.com/AlexRogalskiy) [![KoFi](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellow.svg?logo=ko-fi)](https://ko-fi.com/alexrogalskiy)

[*(back to top)*](#java-design-patterns)

## 👨‍👨‍👧‍👦 *Acknowledgement*

[![Stargazers repo roster for @AlexRogalskiy/java-patterns](https://reporoster.com/stars/AlexRogalskiy/java-patterns)](https://github.com/AlexRogalskiy/java-patterns/stargazers)

[![Stargazers over time](https://starchart.cc/AlexRogalskiy/java-patterns.svg)](https://starchart.cc/AlexRogalskiy/java-patterns)

[![Statistics report](https://cauldron.io/project/5121/stats.svg)](https://cauldron.io/project/5121)

[*(back to top)*](#java-design-patterns)

## 📎 *OpenGraph Card*

![OpenGraph card](https://raw.githubusercontent.com/AlexRogalskiy/java-patterns/master/images/opengraph-card.png)

[*(back to top)*](#java-design-patterns)

## 🔥 *Feeds and Podcasts*

### *Reddit posts*

* [Spring4Shell Details and Exploit code leaked](https://www.reddit.com/r/java/comments/tsdllr/spring4shell_details_and_exploit_code_leaked/)
* [Apple's Code-signing Quagmire](https://www.reddit.com/r/java/comments/tsd2cr/apples_codesigning_quagmire/)
* [Spring4Shell: 0-day RCE on Spring Core](https://www.reddit.com/r/java/comments/tscqlg/spring4shell_0day_rce_on_spring_core/)
* [Game Making Libraries + Engines in Java 2022](https://www.reddit.com/r/java/comments/tscojc/game_making_libraries_engines_in_java_2022/)
* [Where's Java Going In 2022?](https://www.reddit.com/r/java/comments/tsbleo/wheres_java_going_in_2022/)
* [Architecture design help](https://www.reddit.com/r/java/comments/tsb2tu/architecture_design_help/)
* [Maven is turning 20 today 🥳 To many more years of stable Java builds 🍻](https://www.reddit.com/r/java/comments/ts5urt/maven_is_turning_20_today_to_many_more_years_of/)
* [Memory leak due to improper exception handling](https://www.reddit.com/r/java/comments/ts4rfm/memory_leak_due_to_improper_exception_handling/)
* [Scaling Spring Batch processing with partitioning using Kafka](https://www.reddit.com/r/java/comments/ts190r/scaling_spring_batch_processing_with_partitioning/)
* [New in JDK 18: Reviewing Enhancements in the Latest JDK Release](https://www.reddit.com/r/java/comments/trufoj/new_in_jdk_18_reviewing_enhancements_in_the/)

[*(back to top)*](#java-design-patterns)

### *InfoWorld posts*

* [JDK 18: The new features in Java 18](https://www.infoworld.com/article/3630510/jdk-18-the-new-features-in-java-18.html#tk.rss_java)
* [JDK 19: Java 19 begins to take shape](https://www.infoworld.com/article/3653331/jdk-19-java-19-begins-to-take-shape.html#tk.rss_java)
* [Project Loom: Understand the new Java concurrency model](https://www.infoworld.com/article/3652596/project-loom-understand-the-new-java-concurrency-model.html#tk.rss_java)
* [Java 19 could be big](https://www.infoworld.com/article/3652336/java-19-could-be-big.html#tk.rss_java)
* [Java 8 still dominates, but Java 17 wave is coming – survey](https://www.infoworld.com/article/3652408/java-8-still-dominates-but-java-17-wave-is-coming-survey.html#tk.rss_java)
* [Rust programming for Java developers](https://www.infoworld.com/article/3651362/rust-programming-for-java-developers.html#tk.rss_java)
* [TypeScript usage growing by leaps and bounds — report](https://www.infoworld.com/article/3650513/typescript-usage-growing-by-leaps-and-bounds-report.html#tk.rss_java)
* [A brief intro to the Pants build system](https://www.infoworld.com/article/3650508/a-brief-intro-to-the-pants-build-system.html#tk.rss_java)
* [Java proposal would lower GC latency](https://www.infoworld.com/article/3649194/java-proposal-would-lower-gc-latency.html#tk.rss_java)
* [How to handle Java errors and cleanup without finalize](https://www.infoworld.com/article/3649089/how-to-handle-java-errors-and-cleanup-without-finalize.html#tk.rss_java)

[*(back to top)*](#java-design-patterns)

### *Let's talk posts*

* [Link Dump #29](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-29.html)
* [Link Dump #28](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-28.html)
* [Link Dump #27](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-27.html)
* [Link Dump #26](http://letstalkaboutjava.blogspot.com/2022/03/link-dump-26.html)
* [Link Dump #25](http://letstalkaboutjava.blogspot.com/2022/02/link-dump-25.html)
* [Link Dump #24](http://letstalkaboutjava.blogspot.com/2022/02/link-dump-24.html)
* [Link Dump #23](http://letstalkaboutjava.blogspot.com/2022/02/link-dump-23.html)
* [Link Dump #22](http://letstalkaboutjava.blogspot.com/2022/01/link-dump-22.html)
* [Link Dump #21](http://letstalkaboutjava.blogspot.com/2022/01/link-dump-21.html)
* [Link Dump #20](http://letstalkaboutjava.blogspot.com/2022/01/link-dump-20.html)

[*(back to top)*](#java-design-patterns)

### *Random thoughts posts*

* [Join in SQL](http://randomthoughtsonjavaprogramming.blogspot.com/2022/03/join-in-sql.html)
* [For-loops and Streams](http://randomthoughtsonjavaprogramming.blogspot.com/2022/03/for-loops-and-streams.html)
* [Being Glue](http://randomthoughtsonjavaprogramming.blogspot.com/2022/02/being-glue.html)
* [Hibernate Proxies and the Visitor Pattern](http://randomthoughtsonjavaprogramming.blogspot.com/2022/02/hibernate-proxies-and-visitor-pattern.html)
* [RAID Mirrorring with ADM](http://randomthoughtsonjavaprogramming.blogspot.com/2022/01/raid-mirrorring-with-adm.html)
* [Are we really engineers?](http://randomthoughtsonjavaprogramming.blogspot.com/2022/01/are-we-really-engineers.html)
* [Standard RAID levels](http://randomthoughtsonjavaprogramming.blogspot.com/2021/12/standard-raid-levels.html)
* [Assing JsonIgnore on generated files in openapi](http://randomthoughtsonjavaprogramming.blogspot.com/2021/12/assing-jsonignore-on-generated-files-in.html)
* [RESTEASY004590: You must define a @Consumes type on your client method or interface, or supply a default](http://randomthoughtsonjavaprogramming.blogspot.com/2021/12/resteasy004590-you-must-define-consumes.html)
* [Replacing many if statements](http://randomthoughtsonjavaprogramming.blogspot.com/2021/11/replacing-many-if-statements.html)

[*(back to top)*](#java-design-patterns)

### *Better code posts*

* [How To Use CORS in NestJS Application](https://betterjavacode.com/programming/how-to-use-cors-in-nestjs-application)
* [Handling Large Datasets in Distributed Systems](https://betterjavacode.com/programming/handling-large-datasets-in-distributed-systems)
* [Example of Spring Cloud Function with AWS Lambda](https://betterjavacode.com/programming/example-spring-cloud-function-aws-lambda)
* [How to Use Pub/Sub with NodeJS](https://betterjavacode.com/programming/how-to-use-pub-sub-with-nodejs)
* [Logging in Spring Boot Microservices](https://betterjavacode.com/programming/logging-in-spring-boot-microservices)
* [Implementing Domain-Driven Design](https://betterjavacode.com/programming/implementing-domain-driven-design)
* [A Step By Step Guide to Kubernetes](https://betterjavacode.com/programming/learn-kubernetes-step-by-step)
* [Spring Cloud Tutorial for Beginners](https://betterjavacode.com/spring-boot/spring-cloud-tutorial-for-beginners)
* [Details of Liskov Substitution Principle Example](https://betterjavacode.com/programming/liskov-substitution-principle-example)
* [Building Microservices with Event-Driven Architecture](https://betterjavacode.com/programming/microservices-event-driven-architecture)

[*(back to top)*](#java-design-patterns)

### *Inside Java posts*

* [ZGC - The Future of Low-Latency Garbage Collection Is Here](https://inside.java/2022/03/30/odl-zgc/)
* [New in JDK 18: Reviewing Enhancements in the Latest JDK Release](https://inside.java/2022/03/29/new-in-jdk18/)
* [Moving Java Forward Keynote](https://inside.java/2022/03/28/odl-moving-java-forward/)
* [Java Is Fast! - Inside Java Newscast #22](https://inside.java/2022/03/24/insidejava-newscast-022/)
* [Programmer’s Guide to Snippets](https://inside.java/2022/03/23/snippets-programmer-guide/)
* [`jextract` Standalone Repository](https://inside.java/2022/03/23/jextract-standalone-repo/)
* [Episode 23 “Java 18 is Here!”](https://inside.java/2022/03/22/podcast-023/)
* [The Arrival of Java 18!](https://inside.java/2022/03/22/the-arrival-of-java18/)
* [JavaOne is back!](https://inside.java/2022/03/22/javaone-is-back/)
* [JDK 18 Security Enhancements](https://inside.java/2022/03/22/jdk-18-security-enhancements/)

[*(back to top)*](#java-design-patterns)

### *Java programmer posts*

* [6 Best Online Java Courses for Beginners in 2022](https://www.thejavaprogrammer.com/java-courses-for-beginners/)
* [Solve Error Java Access Denied FileNotFoundException](https://www.thejavaprogrammer.com/java-access-denied/)
* [Custom Iterator in Java with Example](https://www.thejavaprogrammer.com/custom-iterator-in-java/)
* [Rounding in Java – Math.Round, Math.Floor, Math.Ceil](https://www.thejavaprogrammer.com/rounding-in-java/)
* [Advantages of Hibernate Over JDBC?](https://www.thejavaprogrammer.com/advantages-of-hibernate-over-jdbc/)
* [Advantages of R Programming Language](https://www.thejavaprogrammer.com/advantages-of-r-programming-language/)
* [Method Overloading in Java With Example](https://www.thejavaprogrammer.com/method-overloading-in-java/)
* [10 Best Laptop for Java Programming in India 2022](https://www.thejavaprogrammer.com/laptop-for-java-programming/)
* [Types of Constants in Java](https://www.thejavaprogrammer.com/types-of-constants-in-java/)
* [Java Collection Hierarchy](https://www.thejavaprogrammer.com/java-collection-hierarchy/)

[*(back to top)*](#java-design-patterns)

### *Dreamix posts*

* [Learn from Java Champion Markus Eisele: Developer productivity with containers and the future of cloud-native](https://dreamix.eu/blog/java/learn-from-java-champion-markus-eisele-developer-productivity-with-containers-and-the-future-of-cloud-native)
* [Learn from Java Champion Johan Vos: JavaFx in the Age of Browsers](https://dreamix.eu/blog/java/learn-from-java-champion-johan-vos-javafx-in-the-age-of-browsers)
* [Five Reasons to Choose Java for your Next Software Project](https://dreamix.eu/blog/java/five-reasons-to-choose-java-for-your-next-software-project)
* [Learn from Java Champion Gunnar Morling: Performance unit testing with Java Flight Recorder (JFR) and JfrUnit](https://dreamix.eu/blog/java/learn-from-java-champion-gunnar-morling-performance-unit-testing-with-java-flight-recorder-jfr-and-jfrunit)
* [Unit Testing in Java – The Missing Bits (Part 2)](https://dreamix.eu/blog/java/unit-testing-in-java-the-missing-bits-part-2)
* [Unit Testing in Java – The Missing Bits (Part 1)](https://dreamix.eu/blog/java/unit-testing-in-java-the-missing-bits-part-1)
* [Sorting An Array In Java: Tips & Tricks](https://dreamix.eu/blog/java/sorting-an-array-in-java-tips-tricks)
* [Java vs JavaScript: How to Choose the Right Backend Technology?](https://dreamix.eu/blog/java/java-vs-javascript-how-to-choose-the-right-backend-technology)
* [Splitting String in Java – Examples and Tips](https://dreamix.eu/blog/java/splitting-string-in-java-examples-and-tips)
* [Learn from Java Champion Gerrit Grunwald: JavaFx – not dead yet](https://dreamix.eu/blog/java/learn-from-java-champion-gerrit-grunwald-javafx-not-dead-yet)

[*(back to top)*](#java-design-patterns)

### *Plumbr posts*

* [Plumbr has been acquired by Splunk](https://plumbr.io/blog/plumbr-blog/acquired-by-splunk)
* [Using Plumbr with OpenTelemetry NodeJS agent](https://plumbr.io/blog/plumbr-blog/using-plumbr-with-opentelemetry-nodejs-agent)
* [Extending Plumbr RUM with Web Vitals metrics](https://plumbr.io/blog/performance-blog/extending-plumbr-rum-with-web-vitals-metrics)
* [Send alerts from Plumbr to Microsoft Teams](https://plumbr.io/blog/product-updates/send-alerts-from-plumbr-to-microsoft-teams)
* [Universal agent expands bottleneck coverage with slow http requests](https://plumbr.io/blog/product-updates/universal-agent-bottleneck-slow-http-requests)
* [Achieve the three pillars of observability – link Plumbr distributed traces with logs](https://plumbr.io/blog/java/linking-plumbr-distributed-traces-with-logs)
* [Transaction snapshots become request processing](https://plumbr.io/blog/product-updates/transaction-snapshots-become-request-processing)
* [Plumbr now monitors Python applications and APIs](https://plumbr.io/blog/product-updates/plumbr-now-monitors-python-applications-and-apis)
* [Distributed tracing in practice](https://plumbr.io/blog/tracing/distributed-tracing-in-practice)
* [Plumbr now supports application versioning](https://plumbr.io/blog/product-updates/plumbr-now-supports-application-versioning)

[*(back to top)*](#java-design-patterns)

### *Thorben Janssen posts*

* [MutationQuery and SelectionQuery in Hibernate 6](https://thorben-janssen.com/mutationquery-and-selectionquery/)
* [Native Queries – How to call native SQL queries with JPA & Hibernate](https://thorben-janssen.com/jpa-native-queries/)
* [Hibernate 6 EmbeddableInstantiator – Instantiate embeddables your way](https://thorben-janssen.com/hibernate-embeddableinstantiator/)
* [Logging Guide for Hibernate 4, 5 & 6 – Use the right config for dev and prod](https://thorben-janssen.com/hibernate-logging-guide/)
* [Dynamic Inserts and Updates with Spring Data JPA](https://thorben-janssen.com/dynamic-inserts-and-updates-with-spring-data-jpa/)
* [FlushMode in JPA and Hibernate – What it is and how to change it](https://thorben-janssen.com/flushmode-in-jpa-and-hibernate/)
* [Hibernate Performance Tuning Tips – 2022 Edition](https://thorben-janssen.com/tips-to-boost-your-hibernate-performance/)
* [The Best Spring Data JPA Logging Configuration in Spring Boot](https://thorben-janssen.com/spring-data-jpa-logging/)
* [Naming Strategies in Hibernate 5](https://thorben-janssen.com/naming-strategies-in-hibernate-5/)
* [The Best Mapping for Shared Technical Attributes With Hibernate](https://thorben-janssen.com/mapping-shared-technical-attributes/)

[*(back to top)*](#java-design-patterns)

### *Redhat posts*

* [Using Kubernetes ConfigMaps to define your Quarkus application’s properties](https://developers.redhat.com/blog/2020/01/23/using-kubernetes-configmaps-to-define-your-quarkus-applications-properties/)
* [CodeReady Workspaces devfile, demystified](https://developers.redhat.com/blog/2019/12/09/codeready-workspaces-devfile-demystified/)
* [Decoupling microservices with Apache Camel and Debezium](https://developers.redhat.com/blog/2019/11/19/decoupling-microservices-with-apache-camel-and-debezium/)
* [How Quarkus brings imperative and reactive programming together](https://developers.redhat.com/blog/2019/11/18/how-quarkus-brings-imperative-and-reactive-programming-together/)
* [Open Liberty Java runtime now available to Red Hat Runtimes subscribers](https://developers.redhat.com/blog/2019/11/14/open-liberty-java-runtime-now-available-to-red-hat-runtimes-subscribers/)
* [New features in Red Hat CodeReady Studio 12.13.0.GA and JBoss Tools 4.13.0.Final for Eclipse 2019-09](https://developers.redhat.com/blog/2019/11/11/new-features-in-red-hat-codeready-studio-12-13-0-ga-and-jboss-tools-4-13-0-final-for-eclipse-2019-09/)
* [Quarkus: Modernize “helloworld” JBoss EAP quickstart, Part 1](https://developers.redhat.com/blog/2019/11/07/quarkus-modernize-helloworld-jboss-eap-quickstart-part-1/)
* [Managing JBoss EAP/Wildfly using Jcliff](https://developers.redhat.com/blog/2019/11/06/managing-jboss-eap-wildfly-using-jcliff/)
* [Bring joy to development with Quarkus, the cloud-native Java framework](https://developers.redhat.com/blog/2019/10/24/bring-joy-to-development-with-quarkus-the-cloud-native-java-framework/)
* [What’s new in Red Hat Dependency Analytics](https://developers.redhat.com/blog/2019/10/15/whats-new-in-red-hat-dependency-analytics/)

[*(back to top)*](#java-design-patterns)

### *JavaCodeGeeks posts*

* [Json Patch and Json Merge Patch in Java](https://www.javacodegeeks.com/2021/05/json-patch-and-json-merge-patch-in-java.html)
* [Making the Case for Digital Renovation](https://www.javacodegeeks.com/2021/05/making-the-case-for-digital-renovation.html)
* [Retention period and issue with Kafka data not getting deleted](https://www.javacodegeeks.com/2021/05/retention-period-and-issue-with-kafka-data-not-getting-deleted.html)
* [Kafka Record Patterns for Data Replication](https://www.javacodegeeks.com/2021/05/kafka-record-patterns-for-data-replication.html)
* [\[MEGA DEAL\] The 2021 Java Bootcamp Bundle(96% off)](https://www.javacodegeeks.com/2021/05/mega-deal-the-2021-java-bootcamp-bundle96-off.html)
* [Supporting bulk operations in REST APIs](https://www.javacodegeeks.com/2021/05/supporting-bulk-operations-in-rest-apis.html)
* [Handling Actions Class in Selenium and its usage](https://www.javacodegeeks.com/2021/05/handling-actions-class-in-selenium-and-its-usage.html)
* [Store health and safety – Example health and safety architecture](https://www.javacodegeeks.com/2021/05/store-health-and-safety-example-health-and-safety-architecture.html)
* [Developers Are Obsessed With Their Text Editors](https://www.javacodegeeks.com/2021/05/developers-are-obsessed-with-their-text-editors.html)
* [Understanding Istio Telemetry v2](https://www.javacodegeeks.com/2021/05/understanding-istio-telemetry-v2.html)

[*(back to top)*](#java-design-patterns)

### *DevCases posts*

* [Spring JavaMelody Tutorial](https://devcases.com/java/spring-javamelody-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-javamelody-tutorial)
* [Spring Boot JavaMelody Tutorial](https://devcases.com/java/spring-boot-javamelody-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-javamelody-tutorial)
* [How to find file in directory](https://devcases.com/java/how-to-find-file-in-directory/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-find-file-in-directory)
* [How to list all files in the directory](https://devcases.com/java/how-to-list-all-files-in-the-directory/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-list-all-files-in-the-directory)
* [How to convert Iterable to Collection](https://devcases.com/java/how-to-convert-iterable-to-collection/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-convert-iterable-to-collection)
* [Spring Boot CRUD Tutorial with embedded H2 and Freemarker](https://devcases.com/java/spring-boot-crud-tutorial-with-embedded-h2-and-freemarker/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-crud-tutorial-with-embedded-h2-and-freemarker)
* [Spring Boot CRUD Tutorial with embedded H2 and JSP](https://devcases.com/java/spring-boot-embedded-h2-jsp-crud-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-embedded-h2-jsp-crud-tutorial)
* [Spring Boot Hello World – Freemarker tutorial](https://devcases.com/java/spring-boot-hello-world-freemarker-tutorial/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-hello-world-freemarker-tutorial)
* [Spring Boot Hello World – JSP tutorial](https://devcases.com/java/spring-boot-hello-world-jsp/?utm_source=rss\&utm_medium=rss\&utm_campaign=spring-boot-hello-world-jsp)
* [How to debug maven tests](https://devcases.com/java/how-to-debug-maven-tests/?utm_source=rss\&utm_medium=rss\&utm_campaign=how-to-debug-maven-tests)

[*(back to top)*](#java-design-patterns)

***

[![forthebadge](https://img.shields.io/badge/made%20with-%20markdown-C1282D.svg?logo=markdown\&style=for-the-badge)](https://www.markdownguide.org/) [![forthebadge](https://img.shields.io/badge/powered%20by-%20gitbook-7116FB.svg?logo=gitbook\&style=for-the-badge)](https://www.gitbook.com/) [![forthebadge](https://img.shields.io/badge/build%20with-%20%E2%9D%A4-B6FF9B.svg?logo=heart\&style=for-the-badge)](https://forthebadge.com/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://alexander-rogalsky.gitbook.io/java-patterns/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
