谈谈对spring boot分层中各层的理解

谈谈对spring boot分层中各层的理解,第1张

1 Dao层:持久层,主要是和数据库进行交互

dao层首先胡创建dao接口,接着就可以在配置文件中定义该接口的实现类;接着就可以在模块中调用dao的接口进行数据业务的处理,而不用关注此接口的具体实现是哪一个类,dao层的数据源和数据库实在配置文件中进行配置的。

2 Entity层:实体层,数据库在项目中的类

主要用于定义与数据库对象的属性,提供get/set方法,带参和无参的构造方法。

3 Service层:业务层控制业务

业务模块的逻辑应用设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。

好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。

4Controller层:控制层 控制业务逻辑

具体的业务模块流程的控制,controller层主要调用Service层里面的接口控制具体的业务流程,控制的配置也要在配置文件中进行。

Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计

总结:具体的一个项目中有:controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。

补充:5、View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示

使用普通的@SpringBootTest进行单元测试时会将整个应用都启动,和正常启动工程没什么区别。非常耗时。

如下,启动测试。将web层也启动了。事实上根本不需要启动这个。

我们只需要启动dao就行了。在这里我们使用mybatis-spring-boot-starter-test这个依赖

测试例子

打印sql

1、javalangIllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=) with your test

需要和springboot main方法放到同一级包下

2、Caused by: orgspringframeworkbeansBeanInstantiationException: Failed to instantiate [comzaxxerhikariHikariDataSource]: Factory method 'dataSource' threw exception; nested exception is orgspringframeworkbootautoconfigurejdbcDataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

若依工程引入这个真的有点难,推荐还是使用@SpringBootTest的方式

普通单数据源请配置如下:springdatasourceurl的形式;否则单元测试启动报错'url' attribute is not specified and no embedded datasource could be configured

有多个数据源时才去配置这样,springdatasourcedruidmasterurl;

在IntelliJ使用 Spring Initializer快速创建项目

这是pom文件中父项目,再进一步查看其 spring-boot-starter-parent

发现真正管理Spring Boot应用里面的所有依赖版本的地方在这 spring-boot-dependencies

Spring Boot的版本仲裁中心;

以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)

再往下看:

这是spring boot的web场景启动器,只要引入了它,就能帮我们导入了web模块正常运行所依赖的组件;

@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

@SpringBootConfiguration:Spring Boot的配置类:标注在某个类上,表示这是一个Spring Boot的配置类;

@Configuration:配置类上来标注这个注解;

配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component

@EnableAutoConfiguration:开启自动配置功能;

以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

在src下创建一个controller包,新建一个HelloController类,之后运行springboot,便可以通过 localhost:/8080/hello 来访问hello页面。

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

• applicationproperties

• applicationyml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

springboot 启动会扫描以下位置的applicationproperties或者applicationyml文件作为Spring boot的默认配置文件

–file:/config/

–file:/

–classpath:/config/

–classpath:/

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot会从这四个位置全部加载主配置文件;互补配置;

applicationyml

@Value获取值和@ConfigurationProperties获取值比较

配置文件yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

==我们还可以通过springconfiglocation来改变默认的配置文件位置==

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;

java -jar spring-boot-02-config-02-001-SNAPSHOTjar --springconfiglocation=G:/applicationproperties

以上就是关于谈谈对spring boot分层中各层的理解全部的内容,包括:谈谈对spring boot分层中各层的理解、在 springboot 中进行单独的 mybatis 单元测试、SpringBoot项目结构及功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9689432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存