You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Grace](https://github.com/graceframework/grace-framework) is a fork of [Grails 5.1.x](https://github.com/apache/grails-core/tree/5.1.x) that started development in early 2022, it's a powerful and open-source One-Person web framework used to build enterprise-grade [Spring Boot](https://spring.io/projects/spring-boot/) applications with the powerful [Groovy](https://groovy-lang.org/) programming language. The core framework is very extensible and there are numerous [Plugins](https://github.com/grace-plugins/) available that provide easy integration of add-on features.
17
+
[Grace framework](https://github.com/graceframework/grace-framework) is a fork of [Grails 5.1.x](https://github.com/apache/grails-core/tree/5.1.x) that started development in early 2022, it's a powerful and open-source One-Person web framework used to build enterprise-grade [Spring Boot](https://spring.io/projects/spring-boot/) applications with the powerful [Groovy](https://groovy-lang.org/) programming language. The core framework is very extensible and there are numerous [Plugins](https://github.com/grace-plugins/) available that provide easy integration of add-on features.
18
18
19
19
## Why Grace?
20
20
21
21
Grace inherits the excellent concepts and designs of Grails, and based on this, has undergone significant restructuring to ensure that each module is independent and decoupled, such as [Grace API](/grace-api), [Grace Boot](/grace-boot), [Grace CLI](/grace-cli), [Grace Plugin API](/grace-plugin-api), [Grace Spring Boot](/grace-spring-boot), [Grace Util](/grace-util). Meanwhile, in order to better focus on maintenance and upgrades, Grace also merged the previously spun-off modules, [Converters plugin](/grace-plugin-converters), [GSP](/grace-plugin-gsp), [Grace Test Support](/grace-test-support). [Grace Boot](/grace-boot/README.md), as an [Auto-configuration](/grace-boot/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.java), it will load all other modules and plugins. Grace follows good modular design, and these modules can be used independently in Spring Boot applications.
22
22
23
23
Spring is the foundation for Grace, which is built on top of Spring Boot. To better support Spring Boot and integrate with other Spring ecosystems, Grace has rewritten `Plugin.doWithSpring()` using Spring Boot's [Auto-configuration](https://docs.spring.io/spring-boot/reference/using/auto-configuration.html), which also reduces redundant configurations and provides significant performance improvements. Grace has also provided [Configuration Metadata](https://docs.spring.io/spring-boot/specification/configuration-metadata/index.html) files include in Grace plugins' jars, the files are designed to let IDE developers offer contextual help and “code completion” as users are working with application.properties or application.yaml files. So, a Grace plugin is an extended Spring Boot Starter.
24
24
25
-
It is worth mentioning that Grace supports all current versions of Spring Boot, including [2.7](https://github.com/graceframework/grace-framework/releases/tag/v2022.2.9), [3.0](https://github.com/graceframework/grace-framework/releases/tag/v2023.0.3), [3.1](https://github.com/graceframework/grace-framework/releases/tag/v2023.1.0), [3.2](https://github.com/graceframework/grace-framework/releases/tag/v2023.2.0), [3.3](https://github.com/graceframework/grace-framework/releases/tag/v2023.3.0), [3.4](https://github.com/graceframework/grace-framework/releases/tag/v2024.0.0-RC1), and the latest [3.5](https://github.com/graceframework/grace-framework/releases/tag/v2024.1.0-M1). This makes the upgrade path easier and more manageable.
25
+
It is worth mentioning that Grace supports all current versions of Spring Boot, including [2.7](https://github.com/graceframework/grace-framework/releases/tag/v2022.2.9), [3.0](https://github.com/graceframework/grace-framework/releases/tag/v2023.0.3), [3.1](https://github.com/graceframework/grace-framework/releases/tag/v2023.1.0), [3.2](https://github.com/graceframework/grace-framework/releases/tag/v2023.2.0), [3.3](https://github.com/graceframework/grace-framework/releases/tag/v2023.3.0), [3.4](https://github.com/graceframework/grace-framework/releases/tag/v2024.0.0), and [3.5](https://github.com/graceframework/grace-framework/releases/tag/v2024.1.0-M2). This makes the upgrade path easier and more manageable.
26
26
27
-
Grace has been actively developing, bringing numerous improvements and new features, including [Plugins](/grace-plugin-api/README.md), [GSP](/grace-plugin-gsp/README.md), [Console](/grace-console/README.md), [Shell](/grace-shell/README.md), and [Profiles](https://github.com/grace-profiles). Of course, it has also fixed a large number of legacy defects left in Grails 5, this makes developers happy.
27
+
Grace has been actively developing, bringing numerous improvements and new features, including [Plugins](/grace-plugin-api/README.md), [Dynamic Modules](/grace-plugin-dynamic-modules/README.md), [GSP](/grace-plugin-gsp/README.md), [Console](/grace-console/README.md), [Shell](/grace-shell/README.md), [Views](/grace-views-core/README.md), and [Profiles](https://github.com/grace-profiles). Of course, it has also fixed a large number of legacy defects left in Grails 5, this makes developers happy.
28
28
29
29
You can learn more on the page [What's New in Grace Framework](https://github.com/graceframework/grace-framework/wiki/What's-New-in-Grace-Framework).
30
30
@@ -40,6 +40,9 @@ Grace has better support Groovy than Spring Boot. Grace fully embraces Groovy to
40
40
41
41
Grace provides a powerful [CLI](/grace-shell/README.md) that allows you to quickly create new projects of many different types using [Application Profiles](https://github.com/grace-profiles) and [Templates](https://github.com/grace-templates) and get started easily. These are all extensible and easy to customize, you can create your own Profiles, Templates, and Commands to meet any of your needs. The learning curve for Grace is moderate and more straightforward than Spring Boot due to its emphasis on convention and simplicity.
42
42
43
+
[Spring Boot 4 has refactored its codebase into a more modular structure](https://spring.io/blog/2025/10/28/modularizing-spring-boot), this is the right direction for the future.
44
+
Grace framework 2024 & 2025 will also start doing this. Grace's plugins will be independent, more focused, and at the same time, they will integrate better with Spring Boot's modules.
45
+
43
46
You can learn more on the page [Grace vs Spring Boot](https://github.com/graceframework/grace-framework/wiki/Grace-vs-Spring-Boot).
44
47
45
48
## Getting Started
@@ -51,6 +54,7 @@ To install Grace, visit https://github.com/graceframework/grace-framework/releas
51
54
```bash
52
55
$ grace create-app com.example.blog
53
56
$ cd blog
57
+
$ grace generate scaffold Post title:string
54
58
$ grace run-app
55
59
```
56
60
@@ -82,16 +86,17 @@ Grace is first and foremost a web application framework, but it is also a platfo
82
86
83
87
[Grace Framework](https://github.com/graceframework/) repository contains core plugins and most commonly used plugins, which are provided by default when creating a project.
84
88
85
-
*[Grace Async and Events](https://github.com/graceframework/grace-async) provides asynchronous, parallel programming, Events APIs, which integrate Grace with various asynchronous libraries and frameworks such as GPars and RxJava.
86
-
*[Grace Cache](https://github.com/graceframework/grace-cache) provides powerful and easy to use caching functionality to Grace applications and plugins.
89
+
*[Grace Async](/grace-plugin-async/README.md) provides asynchronous, parallel programming, which integrate Grace with various asynchronous libraries and frameworks such as GPars and RxJava.
90
+
*[Grace Cache](/grace-plugin-cache/README.md) provides powerful and easy to use caching functionality to Grace applications and plugins.
87
91
*[Grace Data](https://github.com/graceframework/grace-data) formerly known as `GORM` is the data access toolkit to provides a rich set of APIs for accessing relational and non-relational data including implementations for Hibernate (SQL), MongoDB, etc.
88
92
*[Grace Data Hibernate](https://github.com/graceframework/grace-data-hibernate) provides a GORM implementation for Hibernate ORM.
89
93
*[Grace Data MongoDB](https://github.com/graceframework/grace-data-mongodb) provides a GORM implementation for the MongodB Document Database.
90
-
*[Grace Database Migration](https://github.com/graceframework/grace-database-migration) helps you manage database changes uses the Liquibase library.
91
-
*[Grace Fields](https://github.com/graceframework/grace-fields) is a plugin allows you to customize the rendering of input fields for properties of domain objects, command beans and POGOs based on their type, name, etc.
92
-
*[Grace Geb](https://github.com/graceframework/grace-geb) provides the Geb dependencies and a `create-functional-test` command for generating Geb tests.
93
-
*[Grace Scaffolding](https://github.com/graceframework/grace-scaffolding) is a plugin to generate scaffolded controllers and views for your Grace application.
94
-
*[Grace Views](https://github.com/graceframework/grace-views) includes JSON views powered by Groovy's JsonBuilder, also provides the basis for implementation other view types.
94
+
*[Grace Database Migration](/grace-plugin-database-migration/README.md) helps you manage database changes uses the Liquibase library.
95
+
*[Grace Events](/grace-plugin-events/README.md) provides Events APIs, which integrate Grace with various asynchronous libraries and frameworks such as GPars and RxJava.
96
+
*[Grace Fields](/grace-plugin-fields/README.md) is a plugin allows you to customize the rendering of input fields for properties of domain objects, command beans and POGOs based on their type, name, etc.
97
+
*[Grace Geb](/grace-plugin-geb/README.md) provides the Geb dependencies and a `create-functional-test` command for generating Geb tests.
98
+
*[Grace Scaffolding](/grace-plugin-scaffolding/README.md) is a plugin to generate scaffolded controllers and views for your Grace application.
99
+
*[Grace Views](/grace-views-core/README.md) includes JSON views powered by Groovy's JsonBuilder, also provides the basis for implementation other view types.
95
100
96
101
[Grace Plugins](https://github.com/grace-plugins/) repository contains several plugins to develop applications more easier and productive.
97
102
@@ -111,13 +116,13 @@ Grace profile is a simple directory that contains a `profile.yml` file and direc
111
116
112
117
Grace provides several profiles in the [Grace Profiles](https://github.com/grace-profiles) repository,
113
118
114
-
*`base` - a profile for other profiles to extend from
115
-
*`plugin` - a profie to create a plugin
116
-
*`profile` - a profie to create a custom profile
117
-
*`rest-api` - a profie for REST API applications
119
+
*`base` - A profile for other profiles to extend from
120
+
*`plugin` - A profie to create a plugin
121
+
*`profile` - A profie to create a custom profile
122
+
*`rest-api` - A profie for REST API applications
118
123
*`starter` - A profile for getting start to create anything you like
119
-
*`web` - default profile to creae a web app
120
-
*`web-plugin` - a profile for Web plugin that contains web resources `css``js``images`
124
+
*`web` - The default profile to creae a web app
125
+
*`web-plugin` - A profile for Web plugin that contains web resources `css``js``images`
[Grace Data Hibernate](https://github.com/graceframework/grace-data-hibernate) is the original implementation of GORM and has evolved dramatically over the years from a few Meta-programming functions into a complete data access framework with multiple implementations for different datastores relational and NoSQL, which provides a GORM implementation for [Hibernate ORM](https://hibernate.org/orm/).
4
+
5
+
Currently, this plugin has been migrate to Jakarta Namespace, and support [Hibernate 5.6](https://hibernate.org/orm/documentation/5.6/).
[Grace Data MongoDB](https://github.com/graceframework/grace-data-mongodb) provides a GORM implementation for the [MongodB](https://www.mongodb.com) Document Database.
4
+
5
+
MongoDB bridges the gap between key-value stores (which are fast and highly scalable) and traditional RDBMS systems (which provide rich queries and deep functionality).
6
+
7
+
MongoDB (from "humongous") is a scalable, high-performance, open source, document-oriented database.
8
+
9
+
This project aims to provide an object-mapping layer on top of Mongo to ease common activities such as:
10
+
11
+
* Marshalling from Mongo to Groovy/Java types and back again
12
+
* Support for GORM dynamic finders, criteria and named queries
13
+
* Session-managed transactions
14
+
* Validating domain instances backed by the Mongo datastore
This subproject contains much of the core data binding code. The main class here is
4
-
[SimpleDataBinder](./src/main/groovy/grails/databinding/SimpleDataBinder.groovy). Most of the other code
5
-
here exists to support that. The real databinding used in a Grails app is
6
-
[GrailsWebDataBinder](../grails-web-databinding/src/main/groovy/grails/web/databinding/WebDataBinding.groovy) which
7
-
extends `SimpleDataBinder` and is defined in the `grails-web-databinding` subproject. `SimpleDataBinder` is where
8
-
much of the core data binding logic is defined. The `GrailsWebDataBinder` subclass defines a lot of the logic that
9
-
is specific to data binding in the context of a Grails app. For example, all of the GORM special handling that the
10
-
data binder does is in `GrailsWebDataBinder`.
3
+
This subproject contains much of the core data binding code.
4
+
The main class here is [SimpleDataBinder](./src/main/groovy/grails/databinding/SimpleDataBinder.groovy).
5
+
Most of the other code here exists to support that.
6
+
7
+
The real databinding used in a Grails app is [GrailsWebDataBinder](../grails-web-databinding/src/main/groovy/grails/web/databinding/WebDataBinding.groovy) which extends `SimpleDataBinder` and is defined in the `grails-web-databinding` subproject. `SimpleDataBinder` is where much of the core data binding logic is defined. The `GrailsWebDataBinder` subclass defines a lot of the logic that is specific to data binding in the context of a Grails app. For example, all of the GORM special handling that the data binder does is in `GrailsWebDataBinder`.
This A Gradle plugin for Grace which provides a bunch of useful plugins
4
+
5
+
The Grace Gradle Plugin provides Grace support in [Gradle](https://gradle.org).
6
+
It allows you to package Grace plugins or profiles, run Grace applications, and use the dependency management provided by `spring-boot-dependencies`.
7
+
Spring Boot's Gradle plugin requires Gradle 7.x (7.6.4 or later) or 8.x (8.4 or later) and can be used with Gradle's [configuration cache](https://docs.gradle.org/current/userguide/configuration_cache.html).
[Grace Async](https://github.com/graceframework/grace-async) provides asynchronous, parallel programming, which integrate Grace with various asynchronous libraries and frameworks such as GPars and RxJava.
4
+
5
+
To use the Async framework you should add a dependency on the `async` plugin to your `build.gradle` file:
0 commit comments