同步操作将从 actframework/actframework 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
将下面的依赖添加进你的pom.xml
文件
<dependency>
<groupId>org.actframework</groupId>
<artifactId>act</artifactId>
<version>[1.0.0, 2.0.0)</version>
</dependency>
如果需要使用快照版发行,您还需要在pom.xml
文件中加入下面的代码:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
全栈式MVC框架
无与伦比的开发体验与高性能
完整的JSR330依赖注入支持
强大的单页/移动应用开发支持
必须的安全性
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:
@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List listUsersInvoices(
@PathVariable("userId") int user,
@RequestParam(value = "date", required = false) Date dateOrNull) {
...
}
The corresponding ActFramework app code is:
@GetAction("/user/{user}/invoices")
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:
resources
├── 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:
1. Read all .properties
files in the /resources/conf/common
dir
2. 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 in common
profile. The common items that are not overwritten
still effective.
Powerful view architecture with multiple render engine support
Commonly used tools
package demo.helloworld;
import act.Act;
import act.Version;
import org.osgl.mvc.annotation.GetAction;
public class HelloWorldApp {
@GetAction
public String sayHello() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
Act.start("Hello World", Version.appVersion(), HelloWorldApp.class);
}
}
See this 7 mins video on how to create HelloWorld in Eclipse from scratch. or for users without youtube access
package demo.rest;
import act.controller.Controller;
import act.db.morphia.MorphiaAdaptiveRecord;
import act.db.morphia.MorphiaDao;
import org.mongodb.morphia.annotations.Entity;
import org.osgl.mvc.annotation.*;
import java.util.Map;
import static act.controller.Controller.Util.notFoundIfNull;
@Entity("user")
public class User extends MorphiaAdaptiveRecord<User> {
@Controller("user")
public static class Service extends MorphiaDao<User> {
@PostAction
public User create(User user) {
return save(user);
}
@GetAction
public Iterable<User> list() {
return findAll();
}
@GetAction("{id}")
public User show(String id, Map<String, Object> data) {
return findById(id);
}
@PutAction("{id}")
public User update(String id, Map<String, Object> data) {
User user = findById(id);
notFoundIfNull(user);
user.mergeValues(data);
return save(user);
}
@DeleteAction("{id}")
public void delete(String id) {
deleteById(id);
}
}
public static void main(String[] args) throws Exception {
Act.start("RESTful Demo", Version.appVersion(), User.class);
}
}
See this 1 hour video on RESTful support or for user without youtube access
See this 7 mins video to understand more about AdaptiveRecord or for user without youtube access
I love PlayFramework v1.x because it is simple, clear and expressive. It brought us a completely different experience in web development with Java. However I don't totally agree with where Play 2.X is heading for, and it looks like I am not the only person with the concern as per this open letter to Play Framework Developers.
I have thought of rolling out something that could follow the road paved by Play 1.x, something that is simple, clear, expressive and Java (specifically) developer friendly. About one and half year after that I decide I could start the project seriously, and now another one and half year passed by, I've got this ACT framework in a relatively good shape.
Happy coding!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。