<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GitHub on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/category/github/</link><description>Recent content in GitHub on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 14 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://foojay.io/today/category/github/index.xml" rel="self" type="application/rss+xml"/><item><title>What I Learned Building an AI Code Reviewer with Java and Spring Boot</title><link>https://foojay.io/today/what-i-learned-building-an-ai-code-reviewer-with-java-spring-boot/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://foojay.io/today/what-i-learned-building-an-ai-code-reviewer-with-java-spring-boot/</guid><description>&lt;p&gt;AI-assisted coding has changed how quickly developers can write software.&lt;/p&gt;&#10;&lt;p&gt;But that creates another question:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;How do you review all that generated code effectively?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;That question led me to build CodeGuard AI, a self-hosted AI code-review application for GitHub Pull Requests using Java and Spring Boot.&lt;/p&gt;&#10;&lt;p&gt;At first, the architecture seemed simple:&lt;/p&gt;&#10;&lt;pre class="EnlighterJSRAW" data-enlighter-language="generic"&gt;GitHub Pull Request&#10; ↓&#10; LLM&#10; ↓&#10; Review&lt;/pre&gt;&lt;p&gt;In practice, that wasn&amp;rsquo;t enough.&#10;The interesting engineering work was everything around the model: collecting useful Pull Request context, defining review instructions, structuring the model response, assessing findings, and integrating the result back into the GitHub workflow.&#10;This article explains what I learned while building that workflow.&#10;The real problem isn&amp;rsquo;t calling an LLM&#10;Calling an AI provider from a Spring Boot application is relatively straightforward.&#10;The harder question is:&#10;What exactly should the model receive, and what should the application do with the response?&lt;/p&gt;</description></item></channel></rss>