會點java,做點web,基本也就是spring全家桶,所以打算自己折騰一個,實現最基本最常用的一些功能。斷斷續續地終於完成了大部分自己想要的功能。實際專案中使用或許還不太現實,不過也提供了一個去了解框架實現的一個簡單的版本,也讓大家有動力有思路自己去實現一個,原始碼請戳github。
IOC
IOC很大程度借鑑了Spring,簡單的使用
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("test.xml");
ServiceBean serviceBean=(ServiceBean)applicationContext.getBean("testService");
System.out.println(serviceBean);
serviceBean.service();
ServiceBean serviceBean2=(ServiceBean)applicationContext.getBean("serviceBean");
System.out.println(serviceBean2);
serviceBean2.service();
//全域性的容器上下文
ApplicationContextHolder holder=applicationContext.getBean("applicationContextHolder", ApplicationContextHolder.class);
System.out.println("holder get bean : "+holder.getBean("serviceBean"));
rest
實現了許多SpringMvc裡高頻使用的功能和一些針對restful改進的功能
@Api("/base")
public class TestController extends BaseController {
@Value("${user.name:test}")
private String name;
@Inject
private UserService userService;
@RequestMapping
public String index() {
userService.query();
return name;
}
@RequestMapping(mapUrl = "/test/{id}", method = HttpMethod.GET)
@CROS(origins = "www.baidu.com", methods = {HttpMethod.GET}, maxAge = "3600")
public String patgTest(@PathVariable("id") String id) {
return id;
}
@RequestMapping(mapUrl = "/test", method = HttpMethod.GET)
@InterceptorSelect(include = {"aInterceptor"}, exclude = {"bInterceptor"})
public String interceptorTest() {
return "haha";
}
@RequestMapping(mapUrl = "/index")
@CROS
public String paramTest(@RequestParam("id") long id, @RequestParam("name") String name) {
return name + "---" + id;
}
@RequestMapping(mapUrl = "/user/{id}", method = HttpMethod.PUT)
@CROS
public User insert(@PathVariable("id") long id, @RequestBody User user) {
return user;
}
}
看著是不是很熟悉-_- rest詳細說明