Scrapy学习笔记-scrapy的__main__.py和__init__.py(python中的scrapy)
384
2022-08-15
springboot实现maven多模块和打包部署
目录创建多模块项目依赖关系
开发工具 :idea
工程结构:
父工程father
子模块 dao (用于持久化数据跟数据库交互)
子模块 entity (实体类)
子模块 service (处理业务逻辑)
子模块 web (页面交互接收、传递数据,唯一有启动类的模块)
关系: web依赖 service、dao、entity
service依赖 dao、entity
dao依赖 entity
entity谁都不依赖,独立的
创建多模块项目
new ------file-------project
联网状态下 选择 default 直接下一步
项目结构如下
接下来,把src整个删掉,父工程不需要,因为父工程你就当它只有一个外壳就完了
接下来创建子模块 工程上右键 → new → Module 选择Spring Initaializr 下一步
重复上面操作 创建service 现在创建好了 entity 和 servicedao模块和web模块可以根据实际需求选择引入mysql,mybatis,web这些
删除每个子模块中没用的文件,.mvn、.gitignore、daoiml、mvnw、mvnw.cmd文件只留下pom.xml
删除除了web模块以外其它模块中的Applicatin启动项,和resources目录下的application.properties配置文件
以上动作操作完成以后如果你发现你的子模块变成了文件夹,没关系,找到Maven Projects刷新一下就好了
最终的项目结果如下
依赖关系
打开父pom.xml修改打包方式jar为pom,注意:build内容也需要做替换,因为默认的spring-boot-maven-plugin这种方式,等到后期打包的时候他会一直提示你,你引入的依赖不存在!代码如下
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
这里有个坑需要注意,dao、service、entity这三个模块的pom.xml文件中不需要build 内容,直接干掉
entity 的 pom.xml 内容
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
dao 的 pom.xml 内容
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
service 模块的 pom.xml 内容
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
web模块的 pom.xml 内容
注意build部分,因为web模http://块作为程序的入口启动,所以它需要打包,并且要指定Main Class
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
到此为止所有的依赖全部完成!接下来就是测试!做了一个简单的查询在web的项目里application.properties配置文件里 添加以下配置
# mybatis 配置
#使用mybatis配置文件,需要指定该文件的文件路径
#指定mapper.xml文件的路径,如果mapper.xml与接口在一起则不需要该配置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#扫描pojo包中的实体类并起别名
mybatis.type-aliases-package=com.mr
#日志级别改为debug可以显示sql语句,logging.level后为存放mapper接口的包
logging.level.com.mr.mapper=debug
# 开启驼峰命名法 mybatis.configuration.map-underscore-to-camel-case: true
mybatis.configuration.map-underscore-to-camel-case=true
#配置数据源
#德鲁伊 连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=ws
spring.datasource.password=1
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 必须加?号后内容 北京时间东八区
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/redis?serverTimezone=GMT%2B8
在web项目里 pom.xml 中添加以下坐标
entity 模块里 在com.mr包下 创建实体类
public class User {
private Integer userId;
private String userName;
private String userPass;
@DateTimeFormat(pattern ="yyyy-MM-dd HH-mm-ss")
private Date userDate;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPass() {
return userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}
public Date getUserDate() {
return userDate;
}
public void setUserDate(Date userDate) {
this.userDate = userDate;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userPass='" + userPass + '\'' +
", userDate=" + userDate +
'}';
}
public User() {
super();
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
protected void finalize() throws Throwable {
super.finalize();
}
}
在dao模块下 com.mr 包下 创建接口
@Mapper //保证被扫描到
public interface UserDao {
List
}
然后创建 mapper.xml 文件 与web.xml 配置文件路径一致 按下图操作
@Mapper //保证被扫描到
public interface UserDao {
List
}
在service 模块 com.mr包下创建 UserService 接口 并创建对应的实现类 UserServiceImpl
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List
return userDao.queryUser();
}
}
在 web 模块下 com.mr包下创建对应的 UserController 代码如下
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("queryUser")
public String queryUser(ModelMap map){
List
map.put("list",list);
return "list";
}
}
这里需要建立list.ftl 页面在web 模块下的resource-----templates创建
<#list list as user>
${user.userId}
${user.userName}
${(user.userDate?string("yyyy-MM-dd HH-mm-ss"))!"没有设置时间"} <#--!后如果为空的话 需要显示的内容-->
#list>
具体的freemarker 使用-----https://jb51.net/article/236936.htm
在web 模块的 WebApplication 启动项目访问queryUser 效果如下: 这里展示的是数据库数据
打包可执行jar
因为所有的pom.xml有已经配置好了,只需要动手运行 package打包动作就行了,第一次打包不需要clean,记住以后每次打包之前clean一下,关于为什么打jar包,不打war包这个问题,还有其它会遇到的问题,最后说明
双击运行package,看到BUILD SUCCESS 就证明打包成功了 前提是你的每一个模块下的pom.xml要配置好,谁需要打包,谁不需要打包,谁依赖谁,父工程是否声明了子模块,子模块是否声明了父工程是谁,这些是重点!否则 会焦头烂额
接下来去找你工程目录,web文件夹下的target文件夹,刚才打包好的jar文件,就放在这里了
使用 java -jar web-0.0.1-SNAPSHOT.jar 命令来测试运行打包的可执行jar文件
执行成功 !!!!!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~