SpringBoot的起步依赖

SpringBoot的起步依赖

一般认为,SpringBoot 微框架从两个主要层面影响 Spring 社区的开发者们:

  • 基于 Spring 框架的“约定优先于配置(COC)”理念以及最佳实践之路。
  • 提供了针对日常企业应用研发各种场景的 spring-boot-starter 自动配置依赖模块,如此多“开箱即用”的依赖模块,使得开发各种场景的 Spring 应用更加快速和高效。

这些“开箱即用”的依赖模块都采用spring-boot-starter-作为命名的前缀,并皆位于org.springframework.boot 包或者命名空间下

spring-boot-starter-logging

在pom.xml中加入以下依赖则SpringBoot应用将自动使用logback作为应用日志框架:

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

三级标题引入log4j2日志

SpringBoot内置了一套日志框架,由 SLF4j 与 LogBack组成。

  • java.util.logging:是JDK在1.4版本中引入的Java原生日志框架
    -Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件、GUI组件等,
    可以控制每一条日志的输出格式,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应
    用的代码。虽然已经停止维护了,但目前绝大部分企业都是用的log4j。
  • LogBack:是Log4j的一个改良版本
  • Log4j2:Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了

在这里插入图片描述

引入jar包

依赖:

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

若使用log4j或者log4j2:

<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId> spring-boot-starter-log4j </artifactId>
</dependency>
``
或者:

```java
<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId> spring-boot-starter-log4j2 </artifactId>
</dependency>

注意:一定不要将这些完成同一目的的 spring-boot-starter 都加到依赖中
引入配置文件:
如果自定义了文件名,需要在application.yml中配置:

logging:
config: classpath:xxxx.xml
level:
cn.jay.repository: trace
  1. 默认名log4j2-spring.xml,就省下了在application.yml中配置
    `

配置参数

1.日志级别:
机制:如果一条日志信息的级别大于等于配置文件的级别,就记录

trace:追踪,就是程序推进一下,可以写个trace输出
debug:调试,一般作为最低级别,trace基本不用。
info:输出重要的信息,使用较多
warn:警告,有些信息不是错误信息,但也要给程序员一些提示。
error:错误信息。用的也很多。
fatal:致命错误。

输出源:

CONSOLE(输出到控制台)
FILE(输出到文件)

格式:

SimpleLayout:以简单的形式显示
HTMLLayout:以HTML表格显示
PatternLayout:自定义形式显示

PatternLayout自定义日志布局:

%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间,输出到毫秒的时间
%-5level : 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%c : logger的名称(%logger)
%t : 输出当前线程名称
%p : 日志输出格式
%m : 日志内容,即 logger.info("message")
%n : 换行符
%C : Java类名(%F)
%L : 行号
%M : 方法名
%l : 输出语句所在的行数, 包括类名、方法名、文件名、行数
hostName : 本地机器名
hostAddress : 本地ip地址

spring-boot-starter-web与快速 Web 应用开发

依赖:

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

得到可执行的Web应用,没提供任何服务Web请求的Controller,所以任何路径返回SpringBoot默认的错误页面(whitelabel error page),加入下述代码:

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

重新运行 ,错误页面将被我们的 Controller 返回的消息所替代,一个简单的 Web 应用就这样完成了
注意:如果引入 spring-boot-start-web 后还想使用 log4j2,由于springboot默认是用logback的日志框
架的,所以需要排除logback,不然会出现jar依赖冲突的报错。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions><!-- 去掉springboot默认配置 -->
	<exclusion>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-logging</artifactId>
	</exclusion>
</exclusions>
</dependency>
<dependency> <!-- 引入log4j2依赖 -->
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

在外部容器运行SpringBoot

实际部署中,运行tomcat或者weblogic这种外部j2ee容器部署应用
1.在src/main目录下创建webapp文件夹作为我们的WebRoot根目录,在其下创建WEB-INF/web.xml文件,保持空内容即可

<?xml version="1.0" encoding="utf-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>

2.改造ApringApplication启动类,继承SpringBootServletInitializer类,并实现SpringApplicationBuilder方法

@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder
application) {
		return application.sources(MyApplication.class);
}
	public static void main(String[] args) {
		lication.class);
}
}

3.在pom.xml文件中,project下面添加package标签

<packaging>war</packaging>

4.看情况,若编译的war较大,包含有内置的tomcat,为避免与外部容器冲突,需要将内置tomcat移除

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<scope>provided</scope>
</dependency>

5.按正常web项目部署

spring-boot-start-jdbc

若用 SpringBoot 为我们自动配置数据访问的基础设施,那么,我们需要直接或者间接地依赖spring-jdbc,一旦 spring-jdbc 位于我们 SpringBoot 应用的 classpath,即会触发数据访问相关的自动配置行为,最简单的做法就是把 spring-boot-starter-jdbc 加为应用的依赖。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
	<version>${springboot.version}</version>
</dependency>

连接mysql数据库,需要引入mysql驱动依赖

<!-- MySQL 连接驱动依赖 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.21</version>
</dependency>

然后,需要配置数据源:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/chemistic?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456

其中spring.datasource.url中chemistic为数据库库名

通过Lombok辅助

Lombok帮我们解决实体Bean中大量的Getter/Setter方法,以及toString,hashCode等方法,在运行过程中,帮助自动生成的,极大的减少了代码总量
依赖:

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>

spring-boot-start-jpa

SpringData:其实SpringData就是Spring提供了一个操作数据的框架。而SpringData JPA只是
SpringData框架下的一个基于JPA标准操作数据的模块。
SpringData JPA:基于JPA的标准数据进行操作。简化操作持久层的代码。只需要编写接口就可以。
依赖:

<!--SpringData JPA的启动器-->
        <dependency>
           <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

创建实体类entity和Dao接口
entity实体类代码;

package com.example.springbootdemo1.entity;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Data
@Entity
@Table(name="student")
public class student {
    @Id
    @Column(name="sid")
    private int id;

    @Column(name = "gender")
    private String gender;
    @Column(name= "sname")
    private String sname;

}

注意:@Entity 注解是注册实体类的,里面需要写上注册的名称,否则后面写hql的时候会报找不到映射
实体类。

如果在查询注解中设置 nativeQuery = true,则不会发生此异常
@Table 注解是绑定数据库表名。
@Column 注解绑定数据库表字段
每个实体类中都需要一个主键字段属性,用 @Id 主键标明

创建Dao接口:

public interface IStudentDao extends JpaRepository<Student, Integer> {
@Query(nativeQuery = true, value = "select * from student") List<Student>
findAll_bbb();
}

接口类继承 JpaRepository<实体类名称, 主键字段类型>
不需要写任何接口,JpaRepository 已经提供了一系列操作方法,可以直接使用
在这里插入图片描述
如果需要自定义方法,可以使用 @Query 注解来定义hql,如果设置 nativeQuery = true,则 values 值
就是原生sql。
注意:hql 是 hibernate 的对象操作语言,需要有 .hbm.xml 映射文件配合
定义 Service 接口与 ServiceImpl 实现类
测试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao666yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值