[ANN] Bootique 2.0 goes final

26 views
Skip to first unread message

Andrus Adamchik

unread,
Jun 16, 2022, 7:51:40 AM6/16/22
to Bootique User Group
I am very glad to announce that Bootique 2.0 goes final! The release version to use is "2.0.1", as we had to do an extra release after 2.0 was posted when a security fix was announced in the upstream library.

The "GA" version of Bootique 2 is an important milestone, so let me repost some 2.0 highlights:

1. Guice is out, bootique-di is in. We switched to our own Dependency Injection engine, as Guice is barely supported and causes constant trouble with newer JDK upgrades. bootique-di is much faster, lighter, and has no external dependencies (so no more conflicting Guava libs). Conceptually the new DI engine is very close to Guice, so migration is straightforward [1].

2. Comprehensive new test suite built atop of JUnit 5 [2]. While Bootique JUnit4 APIs (that are still available) weren't bad at all, JUnit5 and its advanced test lifecycle took this to the next level. There are 3 simple annotations (@BQTest, @BQTestTool and @BQApp) that enable declarative startup of tested apps and various test "tools". And there are three "scopes" for apps and tools - test class, test method and global. "Global" is Bootique's own invention not explicitly present in JUnit 5 that allows to share expensive resources between multiple test classes. Built-in tools can manage in-memory or real DBs (on Docker), expose client API for the test webapps, provide assertions API for database data and web requests, and support dynamic ports for test resources. All this is pretty well documented [2,3,4].

3. New modules and integrations. Both top-level (MyBatis, Simplejavamail), as well as modules within the existing projects (JUnit 5 related, Cayenne 4.2, Jersey Bean Validation, AWS secrets)

4. OpenAPI/Swagger. The 1.x version of bootique-swagger was experimental and barely usable. The new version is fully reworked, based on OpenAPI 3. It supports multitenancy and declarative URL mapping for both API specs and API docs, as well as merging specs from multiple sources. Really easy to embed in the apps [5]

5. There are smaller improvements everywhere that make day-to-day development more fun and productive.

Release notes for the final release are shown below [6]. And I should mention that Bootique 3.0 is under active development now, featuring Jakarta support, a whole bunch of new test tools, Agrest 5, etc. Expect 3.0.M1 to happen soon.

Andrus



---
[1] https://bootique.io/docs/2.x/migrate-from-guice/
[2] https://bootique.io/docs/2.x/bootique-docs/#_testing
[3] https://bootique.io/docs/2.x/bootique-jdbc-docs/#jdbc-testing
[4] https://bootique.io/docs/2.x/bootique-jetty-docs/#jetty-testing
[5] https://github.com/bootique/bootique-swagger/blob/master/README.md
[6]
bootique
* #320 Deprecate "bootique-parent"

bootique-cayenne
* #97 Task 68 ("maps" config must be a dictionary) - was not ported to Cayenne 4.1 and 4.2
* #102 2.x: Upgrade Cayenne to 4.2.RC1

bootique-agrest
* #67 4.x: Upgrade to Agrest 4.10


Reply all
Reply to author
Forward
0 new messages