前两部分写完了,整体上这个框架就写完了,剩下的就是应用一下了。~
友情链接:
手写简易SpringMVC框架(一):注解、内嵌Tomcat、类扫描
手写简易SpringMVC框架(二):bean实例化、MappingHandler
3 my-application
这一部分十分简答我就不细说了,大家可以直接看代码。
@MyController
public class SalaryController {
@MyAutoWired
private SalaryService salaryService;
@MyRequestMapping("/salary")
public Integer getSalaryByNameAndDegree(@MyRequestParam("name") String name, @MyRequestParam("degree") String degree) {
if ("xiaoming".equals(name) && "master".equals(degree)) {
return 1000;
} else {
return 500;
}
}
@MyRequestMapping("/salary/modify")
public User modifySalary(String name, String salary) {
return new User("xxx", "1000");
}
@MyRequestMapping("/salary/id")
public Integer getSalaryById(@MyRequestParam("id") String id) {
// System.out.println(id);
return salaryService.getSalaryById(Integer.parseInt(id));
}
}
public class User {
private String name;
private String salary;
public User(String name, String salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", salary='" + salary + '\'' +
'}';
}
}
@MyBean
public class SalaryService {
public Integer getSalaryById(Integer id){
return id * 100;
}
}
public class MyApplication {
public static void main(String[] args) {
MVCApplication.run(MyApplication.class);
}
}
4 运行及测试
我们通过两种方式来测试运行:一种是将my-application打包然后运行这个jar包(注意一下我的maven结构,最外层的工程聚合了mvc-framework
和my-application
然后my-application
的pom.xml中添加了mvc-framework
模块的依赖,所以我们直接对根工程打包);第二种方式是直接在idea中运行或者调试。第二种方式大家自己试试就ok了,我主要说下第一种。
我们找到打好的my-application
模块的jar包,然后运行 java -jar 命令
java -jar {jar包所在的路径}\my-application-1.0-SNAPSHOT.jar
结果发现提示 没有主清单属性,这是为什么呢?因为在以jar包运行的时候,我们需要给它制定一个main class,相当于是给程序指定入口。我们需要在my-application
的pom.xml中添加如下配置(其实就是把注释掉的部位放开就是啦)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--指定jar包中的运行主类-->
<mainClass>cc.gfc.mvc.application.MyApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我们重新打包,然后运行。结果ok啦。