SpringBoot02

使用SpringBoot实现SSM三框架整合

按照javaEE三层架构可以分为:

  • 表现层: SpringMVC【MVC】
  • 业务层: Spring,由Spring实现声明式事务管理
  • 持久层: MyBatis 【ORM】

添加依赖

  • 继承于spring-boot-starter-parent,一般进行SpringBoot框架应用开发时都采用继承的方式。这个父项目提供了版本仲裁机制
  • spring-boot-starter-web启动器用于针对web应用提供支持
  • mybatis-spring-boot-starter启动器用于实现整合MyBatis框架
  • 默认引入了连接HikariCP。但是这里考虑使用druid。所以需要手工添加依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.15</version>
</dependency>
  • 数据库驱动

添加配置

SpringBoot优先考虑使用配置类的方式添加配置信息,但是如果是第三方提供的实现类,而且添加配置类比较繁琐,可以考虑使用核心配置文件

核心配置文件可以使用properties也可以使用yaml两种不同的格式,而且使用过程种IDEA会有提示

application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

利用SpringBoot的初始化实现数据库的初始化创建

在resources目录下创建文件夹database,添加创建数据表的SQL语句

create table if not exists tb_users(
    id bigint primary key auto_increment,
    username varchar(32) not null,
    password varchar(32) not null
)engine=innodb default charset utf8;

添加配置使SpringBoot框架在启动时自动执行schema.sql文件种的sql语句

spring.sql.init.mode=always
spring.sql.init.schema-locations=classpath*:database/schema.sql

配置参数spring.sql.init.mode用于设置初始化模式,有3个可选值,always每次启动SpringBoot时都执行sql语句,never表示不执行sql语句

配置参数spring.sql.init.schema-locations用于指定对应的sql文件位置

配置参数spring.sql.init.data-locations用于指定表种数据的初始化对应的sql文件,例如insert语句

观察在控制台上的日志会发现实际上启动的是默认的连接池HikariCP。如果需要使用Druid,还应该修改配置

2023-01-09T17:07:57.880+08:00  INFO 7448 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...

修改application.properties文件使druid连接池生效

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

属性spring.datasource.type用于设置当前所使用的连接池为druid

依赖包种引入的hikariCP没有用处,可以考虑在pom.xml种进行排除,从而避免项目种引入无用的依赖

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.0</version>
            <exclusions>
                <!-- 排除指定的依赖,不需要将该依赖添加到项目种,这里不需要版本号 -->
                <exclusion>
                    <groupId>com.zaxxer</groupId>
                    <artifactId>HikariCP</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

表现层

使用SpringMVC框架,显示页面使用jsp

SpringBoot已经不推荐使用jsp技术定义显示页面,如果需要使用jsp则需要手动添加额外的依赖

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

其中依赖tomcat-embed-jasper用于实现jsp页面的解析,另外引入jstl以避免在jsp页面种使用java编程

再src/main目录下新增文件夹webapp用于存放jsp页面,另外在webapp目录下创建WEB-INF,最后在WEB-INF文件夹下创建一个新文件夹content用于真正存放jsp页面文件

修改application.properties文件添加视图解析所需要的两个参数

spring.mvc.view.suffix=.jsp
spring.mvc.view.prefix=/WEB-INF/content/

这两个参数用于进行视图解析,将逻辑地址名转换为物理地址

定义SpringMVC的控制器

@Controller
public class IndexController {
    @RequestMapping({"/","","index"})
    public String index(){
        return "index";
    }
}

静态资源解析

不需要额外配置,只是将所有的静态资源存放在src/main/resources/static目录下即可

在static目录下创建子文件夹images,拷贝图片到images,在页面则可以直接访问

<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">

<img src="images/mv02.jpg"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值