# jp-spring **Repository Path**: accuser/jp-spring ## Basic Information - **Project Name**: jp-spring - **Description**: jp-spring是一个Spring-like MVC框架,来动手造一个Spring吧 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2017-01-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### jp-spring是一个Spring-like MVC框架 > 一些名称为了方便熟悉直接从Spring那里拿来...... > 用了那么久Spring,也该动手模仿一下来加深理理解
Inspired by: https://github.com/code4craft/tiny-spring https://github.com/menyouping/jw jp-spring目前有下面5个部分 - jp-ioc (负责bean的创建和注入,下面的模块都依赖这个核心。 核心的详解请看 这里 ) - jp-aop (AOP模块, 负责管理和创建Aspect,并对目标类进行织入) - jp-orm (ORM模块,现在还没完成) - jp-webmvc (MVC模块, 负责映射Request到Controller) - jp-webtest (所有模块在这里都会具体例子) **核心模块ioc, 请点 这里** ```java @Component("helloService") public class HelloService { @Value("jdbc.driver") private String text; @Autowired private OutputService outputService; @Autowired @Qualifier("outService-2") private OutputService outputService2; public void helloWorld(String text) { outputService.output(text); } public void outPutHello(String text) { outputService2.output(text); } } ``` **创建Controller** 详情请看 这里 ```java @Controller public class TestController { @Autowired OutputService outputService; public TestController() { System.out.println("Hello I am TestController"); } @RequestMapping(value = "/test/{one}", method = RequestMethod.GET) public String test2(@PathVariable("one") Integer one, User user, @RequestParam("number") Float number) { System.out.println(outputService); outputService.output(one); outputService.output(user); outputService.output(number); return "test"; } @RequestMapping(value = "/test456465", method = RequestMethod.POST) public String test() { return "test"; } } ``` **创建 Aspect** 具体介绍请看 AOP-README ```java @Aspect @Pointcut("execution(com.jp.controller.*.*())") public class ControllerAspect { private long begin; @Before public void before(TargetSource target) { begin = System.nanoTime(); } @After public void after(TargetSource target) { System.out.println("cost:" + (System.nanoTime() - begin)); } } @Aspect @Pointcut("execution(com.jp.controller.*.test*())") public class TestControllerAspect { @Before public void before(TargetSource target) { System.out.println(target.getTargetMethod() + " begin"); } @After public void after(TargetSource target) { System.out.println(target.getTargetMethod() + " end"); } } ```
目前,我还没做到完全零配置,所以还是需要一些配置 1.web.xml ```xml contextConfigLocation /config/application.xml jp.spring.web.context.ContextLoaderListener DispatcherServlet jp.spring.web.servlet.DispatcherServlet 1 DispatcherServlet / ``` contextConfigLocation这个名字是规定, 对应的值就是配置文件的路径, “/”就是从根路径开始 2.application.xml ```xml /*哪个包需要扫描,子目录也会扫描。为了方面,我直接从项目根目录开始*/ /*一个简单是视图处理,目前仅支持html和jsp*/ /*页面在哪个文件按*/ /*页面的扩展名*/ ``` 下一步我打算使用Annotation来代替XML, 然后只需配置一些属性放在 xxx.properties文件就行,例如数据库链接,需要的扫描的包,或者页面文件夹和扩展名等。 尽快实现
如果这个项目对你有帮助,可否留下一颗星星?