SpringBoot的学习笔记 ---基础

1、SpringBoot 整合连接池

Java为数据库连接池提供了公共的接口:javax.sql.DataSource

SpringBoot工程默认推荐使用HiKariCP连接池

在springboot中,DataSource默认是HikariDataSource,通过一个getConnection()的方法来获取连接,其中这会先检查是否存在HikariPool,如果存在,则通过getConnection()的方法获取连接;如果不存在,则会先创建HikariPool池子,创建池子用到了synchronized,volatile,以及双重判断是否为空来控制线程安全的创建,然后通过Driver的conncet()的方法来获取连接,最后存放一份到池子,再返回给用户调用。
在这里插入图片描述
可以采用断点的形式来跟踪执行的流程:
在这里插入图片描述

2、Spring Boot 整合MyBatis框架

Mybatis框架通常会由spring框架进行资源整合,作为数据层技术实现数据交互操作。
1、需要添加mybatis的依赖
参考官网:mybatis.org/spring

在这里插入图片描述2、我们添加了mybatis依赖以后,spring框架启动时会对mybatis进行自动配置。例如SqlSessionFactory工厂对象的创建。假如需要对mybatis框架进行简易配置,可以打开application.properties文件,采用XML配置文件方式:需要在application.properties配置如下的简单配置:
表示在源文件的mapper文件夹下的所有文件夹里的所有xml文件

3、一般使用@Mapper注解来标识该接口有mybatis框架创建其实现类的对象,最后交由Spring的容器管理

/**
 * @Mapper 注解由Mapper框架提供,此注解描述的接口由mybatis框架创建其实现类,
 * 并交给spring容器管理,对象的名字默认为接口名,然后首字母小写。
 */
@Mapper
public interface XxxDao {

	/**基于商品id删除信息
     * MyBatis框架中定义SQL映射方式有两种:
     * 1)注解 (简单sql)
     * 2)xml (复杂sql)
     * */
	@Delete("delete from tb where id=#{id}")
	int deleteById(Integer id) ;
	}

4、在MyBatis框架中定义SQL映射的方式有两种:一种是将SQL映射定义在我们的xml映射文件中,一种方式是借助注解将其声明在接口方法上。我们在实际项目中对于简单的SQL映射可以直接以注解方式进行声明即可,复杂SQL还是要写到xml中,充分利用动态SQL进行设计会更好一些。

4.1、以下时借助注解的方式进行声明SQL语句:

@Mapper
public interface XxxDao {

	/**基于商品id删除信息
     * MyBatis框架中定义SQL映射方式有两种:
     * 1)注解 (简单sql)
     * 2)xml (复杂sql)
     * */
	@Delete("delete from tb where id=#{id}")
	int deleteById(Integer id) ;
	}

4.2、以下是将SQL语句写在xml文件中:
—这就要在application.properties配置好文件路径(见上述2、的配置)
在这里插入图片描述

3、Spring Boot整合SpringMVC应用

MVC(Model–view–controller)是软件工程中的一种软件架构模式,基于此模式把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
其中:
View—我们可以理解为前端的技术,UI设计人员进行图形界面设计,负责实现与用户交互。
Controller—负责获取请求,处理请求,响应结果。
Model—可以理解为业务层(Service),以及数据持久层(Dao)的结合。
以下为一次简单的请求处理的流程图:
在这里插入图片描述
Spring MVC 是Spring 框架中基于MVC设计思想实现的一个用于处理Web请求的模块。其简易架构分析,如下:
在这里插入图片描述
其中:
DispatcherServlet—为前端的的控制器,处理请求的入口,起到分发的作用
HandlerMapping—映射器对象, 用于管理url与对应controller的映射关系。
Interceptors Chain—拦截器,实现请求响应的共性处理。
Controller—Handler—后台的控制器,负责处理请求的控制逻辑,并分发到不同的业务层去。
ViewResolver—视图解析器,解析对应的视图关系(前缀+viewname+后缀),相当于将后台处理后的数据与相关页面进行整合解析,再返回给到DispatcherServlet,然后做出响应。
1、编辑pom.xml文件,添加web依赖,Thymeleaf依赖
在pom.xml文件中配置:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
		   <groupId>org.springframework.boot</groupId>
		   <artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

其中: Spring Web Starter 提供Spring MVC 依赖支持,并会自动添加一个tomcat依赖,作为嵌入式web服务器使用.thymeleaf是一个html模板引擎,提供了与Spring MVC进行整合的API,可作为MVC架构中Web应用的View层。

2、配置Spring MVC 核心对象
在application.properties文件中添加视图解析器配置(假如没有配置也会默认配置,在默认配置中prefix默认值为classpath:/templates/,后缀默认为.html)。
在这里插入图片描述

4、SpringMVC的简单创建

1、controller层的实现

通过@Controller注解来告诉spring这是一个控制层,并将该类交给spring去管理
@RequestMapping(“/xxx/”)可以用在类上以及方法上:
a、当用在类上时,相当于开辟了一个空间,要访问该controller下的方法时,必须在URL带上这个字段,在拼接需要访问的方法功能的URL字段
b、如果在类上加有相应的RequestMapping注解,则在转发时,return “forward:xxa”,这里的ccc点不能带/,因为加上/后就表示是绝对路径,相当于直接在“http://localhost:8080/xxa”的路径,会访问不到该方法,所以在转发时不能带/,不带时表示的是相对路径,也就是在“http://localhost:8080/xxx/xxa”,表示在转发前的方法的空间内找xxa的方法功能。

/**
 * Spring MVC中的后端处理器(Handler)
 * @author Lee
 */
//http://localhost/xxx/xxa
@Controller
@RequestMapping("/xxx")
public class XxxController {

	@RequestMapping("/xxa")
	public String doGoodsUI(Model model) {//Model为springmvc中存储数据的一个对象
		//获取信息
		List<Xxx> list = xxxService.findXxx();
		//将商品信息存储到请求作用域
		model.addAttribute("xxxlist", list);
		return "xxx";//viewname
	}
		//1)此view会返回给DispatcherServlet对象
		//2)DispatcherServlet对象将view传递给视图解析器ViewResolver
		//3)ViewResolver会对view的名字进行解析(例如添加前缀,后缀,..)
		//4)ViewResolver会将结果返回给DispatcherServlet对象。
		//5)DispatcherServlet将结果响应到客户端。
}

2、service层的实现

@Serice的注解表示将该注解的接口或者实现类的实例对象交由spring去创建管理,其中当后面跟有@Scope(“prototype”)表示该对象为多例,spring只会创建以及初始化,不会对其进行储存管理,它是放在堆里面的,@Scope()默认是单例模式,不加@Scope()也是默认是单例模式,可以参考—SpringBoot的学习笔记 — 入门的3、2)。

3、dao层与上述的mybatis的dao层相同的方式,可参考上述。

有一个疑问,bean什么时候被创建?是在第一次使用的时候,Spring对其进行实例化 ,然后将其放在spring容器中,然后在项目关闭,spring容器销毁前执行bean的销毁方法destroy()来对bean进行销毁????

初学者的简单整理,欢迎各位大佬不吝指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值