2024-08-02
一个人追求的目标越高,他的才能就发展得越快,对社会就越有益,我确信这也是一个真理。——玛克西姆·高尔基
链接:
GitHub - actframework/actframework: An easy to use Java MVC server stack
Install
Add act-starter-parent
into your pom.xml file
1 | <parent> |
Or use maven archetype to start a new project:
1 | mvn archetype:generate -B \ |
tips don’t forget replace the groupId
, artifactId
and appName
in the above script, or you can use interactive mode to generate your project:
1 | mvn archetype:generate -DarchetypeGroupId=org.actframework -DarchetypeArtifactId=archetype-quickstart -DarchetypeVersion=1.9.2.0 |
Note There are more ActFramework application archetypes for use. Please get them here.
Features
-
A full stack MVC framework
- Actframework is NOT a servlet framework. Act app does not run in a servlet container. Instead it run as an independent Java application and it starts in seconds
-
Unbeatable development experience w/ great performance
- Never restart your app when you are developing. Act’s dev mode provides hot reloading feature makes it the dream of every Java web app developer. Check out this 3 mins video and feel it!
- According to TechEmpower Framework Benchmark Act beats most full stack Java web framework on the market. In some cases Act can be over 10 times faster than Springboot
-
Fully JSR330 Dependency Injection support
- ActFramework’s DI support is built on top of Genie, a lightweight yet fast JSR330 implementation.
- Benefit from Act’s powerful class scan feature, it does not require the user to create injector from modules (as the usually way you use Guice). Declare your module and your binding is automatically registered
-
Superb SPA/Mobile app support
- Awesome JSON/RESTful support
- Built-in CORS support
- Session/Header mapping so you are not limited to cookie
- Built-in JWT support
-
Uncompromising Security
- Session cookie is secure and http only, payload is signed and encrypted (optionally)
- Enable CSRF prevention with just one configuration item
- XSS prevention: the default Rythm engine escape variable output by default
- Implementing your authentication/authorisation/accounting framework using AAA plugin
-
Annotation aware but not annotation stack
-
Annotation is one of the tool ActFramework used to increase expressiveness. However we do not appreciate crazy annotation stacked code. Instead we make the code to express the intention in a natural way and save the use of annotation whenever possible.
For example, for the following SpringMVC code:
1
2
3
4
5
6
public List listUsersInvoices(
int user,
{ Date dateOrNull)
...
}The corresponding ActFramework app code is:
1
2
3
4
public List listUsersInvoices(int user, Date date) {
...
}
-
-
Multi-environment configuration
-
ActFramework supports the concept of
profile
which allows you to organize your configurations in different environment (defined by profile) easily. Take a look at the following configurations from one of our real project:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22resources
├── conf
│ ├── common
│ │ ├── app.properties
│ │ ├── db.properties
│ │ ├── mail.properties
│ │ ├── payment.properties
│ │ └── social.properties
│ ├── local-no-ui
│ │ ├── app.properties
│ │ ├── db.properties
│ │ └── port.properties
│ ├── local-sit
│ │ └── app.properties
│ ├── local-ui
│ │ ├── app.properties
│ │ └── db.properties
│ ├── sit
│ │ ├── app.properties
│ │ └── db.properties
│ └── uat
...Suppose on your UAT server, you start the application with JVM option
-Dprofile=uat
, ActFramework will load the configuration in the following sequence:- Read all
.properties
files in the/resources/conf/common
dir - Read all
.properties
files in the/resources/conf/uat
dir
This way ActFramework use the configuration items defined in
uat
profile to overwrite the same items defined incommon
profile. The common items that are not overwritten still effective. - Read all
-
-
Powerful view architecture with multiple render engine support
-
An unbelievable automate testing framework that never presented in any other MVC frameworks
-
Commonly used tools
Sample code
A HelloWorld app
1 | package demo.helloworld; |
See this 7 mins video on how to create HelloWorld in Eclipse from scratch. or for users without youtube access
A full RESTful service
1 | package demo.rest; |