Develop + SDK docs for the Spring-style Java model: new "Coming from Spring Boot" guide, per-language split, annotation-free extensions#128
Merged
Conversation
Update the Develop section for the new Spring-style Java SDK surface introduced by eclipse-dirigible/dirigible#6051: - dependency-injection.md: rewrite the Java section to @component (with Spring naming), constructor injection (preferred), field @Inject, collection injection (List<T>), @PostConstruct/@PreDestroy, and the Beans facade; client code should not use BeanProvider. Describe the single ComponentContainer per ClientClassLoader generation and remove RepositoryClassConsumer / RepositoryRegistry / DependencyResolver and the fixed @order 100/200/300 chain. - decorators-model.md: add @component to the parallel-surface table; note strong interfaces AND method-level annotations for jobs / listeners / websockets; replace the @order wiring description. - scheduled-jobs.md, message-listeners.md, websockets.md: show BOTH the strong interface and the method-level annotation on a @component (@scheduled / @Listener / @OnOpen/@OnMessage/@OnError/@onclose), keeping the reflective fallback note. - extension-providers.md: present collection injection as the recommended Spring-style way to consume all providers, keeping Extensions.find as the programmatic / cross-runtime alternative. - rest-apis.md, entities-and-persistence.md: controllers use constructor injection of the repository. - security-and-roles.md: add a Java vs TypeScript User API parity table. - languages/java.md: align its DI section with the new model. Adds Sample project and SDK reference links across the Java sections. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the Java sections of scheduled-jobs, message-listeners and websockets to exactly two styles, never mixed on one @component class, with no reflective by-name fallback: - Style 1 is the self-describing interface (JobHandler.cron(), MessageHandler.destination()/kind(), WebsocketHandler.endpoint()) on a @component, carrying the binding itself - no class-level @Scheduled/@Listener/@websocket. Mirrors org.quartz.Job / jakarta.jms.MessageListener / TextWebSocketHandler. - Style 2 is the method-level annotation (@Scheduled/@Listener), except websockets keep @websocket as a class annotation (the endpoint has no method-level home, like Jakarta @serverendpoint) with @OnOpen/ @OnMessage/@OnError/@onclose methods. Drop all reflective/hybrid wording and update the decorators-model parallel-surface table and handler-styles section to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…mples Add a Spring Boot -> Dirigible mapping page (annotation table + key differences) and link it from the develop index. Replace the placeholder Java snippets in the building-block pages with the actual code from the dirigiblelabs/sample-java-* repos, showing both the self-describing interface and method-level annotation styles where applicable, each with a "Sample project" link and an SDK reference. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, per-artifact comparisons - Add "Coming from Spring Boot" to the Develop sidebar (config.mts) - Rewrite extension-providers: extension point = plain interface, contribution = @component (no @Extension/@ExtensionPoint); split Consume-at-runtime into Java (List injection + Extensions.find) and TS - working-with-data: split SQL examples into Java / TS subsections, drop the Multi-tenancy section - coming-from-spring-boot: add side-by-side per-artifact examples (Listener, Job, WebSocket, Controller, Repository, Extension) using real classes from the sample-java-* repos Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Key differences section Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ions Reorganize security-and-roles, working-with-files-and-cms, and working-with-git develop pages so each topic separates its Java and TypeScript/JavaScript examples under ### Java / ### TypeScript / JavaScript subheadings (Java first), matching the convention already used on the data, listeners, and jobs pages. Where a feature is config-only or facade-only, that is stated explicitly instead of forcing a split. No documented APIs or behavior changed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…DI 'How it is wired' implementation-agnostic Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…and working-with-files-and-cms Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…(PR #6051) - component: @component bean + field/constructor/parameter @Inject + collection injection; @repository is a plain bean; new Beans facade page + sidebar entry - job: @scheduled is method-level only; JobHandler is self-describing (cron()+run()) - messaging: @Listener is method-level only; MessageHandler is self-describing - net: @websocket + @onx, or self-describing WebsocketHandler; drop reflective fallback - extensions: remove @Extension/@ExtensionPoint; plain-interface points + @component contributions; find(Class) no longer throws checked exception - http: @controller is a managed bean (constructor injection, no no-arg ctor needed) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Provider Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sweep the help docs and the Java-decorators blog so the Java model matches eclipse-dirigible/dirigible #6051: SDK annotations under org.eclipse.dirigible.sdk.*, @Component/@Inject DI with constructor injection preferred, @repository extends JavaRepository<T>, the Beans facade instead of the platform-internal BeanProvider, method-level @scheduled(expression=...), and plain-interface extension points with @component contributions consumed via List<T> / Extensions.find. Removes the retired Java surface (@Extension/@ExtensionPoint, @scheduled(cron=...), the JavaClassConsumer fan-out and the named internals) from the Java sections only. TypeScript content, the classic registry artefacts, and docs/help/develop|api|sdk are left unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…stale meta-annotation list Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ng from Spring Boot' Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Coming from Spring Boot' Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…sample link The sample-java-* PRs are merged to master, so the extension-provider sample now lives on master — reference the repo without the (branch feat/spring-style-extension-injection) suffix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Updates the Develop guide and the Java SDK reference to the Spring-style client-Java model introduced in eclipse-dirigible/dirigible#6051, and reorganizes the affected pages so a reader instantly finds the language they want.
New: "Coming from Spring Boot"
A new
docs/help/develop/coming-from-spring-boot.md(linked from the Develop sidebar) for developers who already know Spring:@Component,@Autowired→@Inject,ApplicationContext→Beans,@RestController→@Controller, Spring Data→JavaRepository,@Scheduled/@JmsListener,TextWebSocketHandler/@ServerEndpoint,@RolesAllowed→@Roles, lifecycle).Develop pages — current model + per-language split
@Component, constructor / field / collection injection,Beans; the "How it is wired" section is kept implementation-agnostic (behavioural guarantees only, no internal class names) so it won't go stale.@Componentcontribution +List<…>collection injection /Extensions.find); the "Consume at runtime" section split into clear Java vs TypeScript/JavaScript subsections.### Java/### TypeScript / JavaScriptsubsections (Java first); constructor injection shown.@Roles, the JavaUserAPI, and the IO/CMS/Git examples split per language; the tenancy/multi-tenancy sections removed from entities-and-persistence, working-with-data and working-with-files-and-cms.@Scheduled/@Listener/@Extensionare meta-@Component" claim and dropped removed@Extension/@ExtensionPointreferences.SDK reference (
/sdk)@Component,@Inject(field/constructor/parameter + collection),@Repositoryas a bean; new Beans page wired into the sidebar.JobHandler/MessageHandler/WebsocketHandler; method-level@Scheduled/@Listener; new@OnOpen/@OnMessage/@OnError/@OnClose; reflective/class-level wording removed.Extensions.find/getExtensionsclarified.Beansinstead ofBeanProviderfor client access;@Controlleris a bean (constructor injection).Other help & blog pages
Swept
docs/help/**and the 2026-05-19 Java-decorators blog so they no longer present the removed/old API (no client-facingBeanProvider, no@Extension/@ExtensionPoint, no@Scheduled(cron=…)for Dirigible, no removed internal class names). TypeScript/JavaScript content and the classic registry artefacts (.job,.listener,.extension, …) are unchanged.Documents eclipse-dirigible/dirigible#6051 — merge after it (and after the sample PRs the examples reference).
🤖 Generated with Claude Code