1.spring 的核心功能模块有 core 模块,data 模块,web 模块,core 模块中主要有 beans 包,context 包,core 包。所以在 frame 模块中建立如下结构
2.结构设计
@1:实现 core 模块,包括 core 包,context 包,beans 包
@2:实现 web 模块,集成 web 和 webmvc
@3:添加 starter,实现类似于 spring boot 的启动方式
3.实现启动器,在 test 模块下建立 Applicaition 类
编写 Applicaition 类
package cn.chenforcode;
public class Application {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
4.打包项目,运行
gradle build
java -jar test/build/libs/test-1.0-SNAPSHOT.jar
这个时候出现了错误:test/build/libs/test-1.0-SNAPSHOT.jar 中没有主清单属性
这是因为没有在打包的时候指定主类,在 test 模块下的 build.gradle 下编写相应的配置
jar {
manifest {
attributes "Main-Class": "cn.chenforcode.Application"
}
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
主要含义
manifest:指定主类
from:将所有的依赖都递归打包:如果是目录,就递归进入,如果不是目录就打包
5.framework 模块打包
在 test 模块的 gradle 文件中添加,compile 中添加的是要打包进去的兄弟模块的名称
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile(project(':framework'))
}
6.在 frame 模块的 starter 包中添加代码
package cn.chenforcode.starter;
public class MiniApplication {
public static void run(Class<?> cls, String[] args) {
System.out.println("Hello Mini-spring!");
}
}
7.在 test 中调用这个代码
package cn.chenforcode;
import cn.chenforcode.starter.MiniApplication;
public class Application {
public static void main(String[] args) {
System.out.println("Hello World!");
MiniApplication.run(Application.class, args);
}
}
8.再次打包运行
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于