Springboot基础项目构建

配置springboot

在springboot中为了方便版本的管理,不引入任何依赖,统一继承父项目的版本

写在pom.xml

<!--继承springboot的父项目-->
    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.5.5</version>
    </parent>

继承父项目之后才开始引入我们需要的依赖,引入的依赖都是springboot封装完成后的依赖

在dependencies标签中放入依赖

例如如下的web依赖

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

需要在main- resource中新建一个配置文件,且文件名必须是

application.yml

如果不出错,文件图标会变成一个小树叶

在java中创建一个入口类 必须有一个main函数 且必须加一个注解 @SpringBootApplication

  • 修饰范围:作用在类上,只能用在入口类上,只能出现一次
  • 作用:标志这个类是一个springboot的入口类,用来启动整个springboot项目的总入口

在main函数中,需要启动springboot应用,且用两个参数

  • 类对象,类对象不同于类的对象,类对象是xxx.class,类的对象通常是new出来的对象
  • main函数的参数,通常为args
public class application {
    public static void main(String[] args) {
        SpringApplication.run(application.class, args);
    }
}

至此SpringBoot才算搭建完成

总结:

  • pom文件引入依赖
  • resource生成application.yml
  • 创建入口类且加入@SpringBootApplication注解
  • 在main中启动应用

修改内嵌服务器内容

application.yml 中进行修改

# 修改端口号
server:
  port: 8000
  servlet:
    context-path: /spring # 修改项目名,且必须斜杠开头,默认是没有的

注解

@SpringBootApplication:注解

  • 组合注解:就是由多个注解组合而成的一个注解
  • 元注解:JDK自带的注解且用来修饰注解的注解
    • @Target:指定注解作用范围
    • @Retention:指定注解什么时候有效
  • @SpringBootApplication主要由三个注解组成
    • @SpringBootConfiguration:这个注解就是用来自动配置Spring SpringMVC(初始化,servlet …)相关环境;
    • @EnableAutoConfiguration:开启自动配置 自动配置Spring相关环境 自动与项目中引入第三方技术自动配置其环境;
    • @ComponentScan:组件扫描,根据注解发挥注解作用,默认扫描当前包及其子包;

工厂模式

SpringBoot = Spring(工厂) + SpringMVC(控制器)

相当等于一个脚手架,如VUE的vue-cil

Spring工厂创建对象:

  • 基于配置文件创建对象:在spring.xml文件中写入<bean id = “" class=“xxx.xxx”/>
  • 基于注解方式创建对象
    • @Component:在工厂中创建对象,通用的对象注解
      • @Controller:创建控制器注解;
      • @Service:创建业务层注解;
      • @Repository:创建dao层注解;

SpringBoot工厂创建对象:

  • 使用原始spring框架中注解创造对象;

  • 使用配置方式创建对象:

    • @Configuration
      • 修饰范围:作用在类上;
      • 作用:代表这个类是一个SpringBoot中配置类;
    • @Bean
      • 作用:创建对象;相当于spring.xml书写bean;
  • @Configuration
    public class BeansConfig{
    	@Bean
    	public User user(){
    		return new User();
    	}
    }
    

属性注入

Spring的属性注入:

  • 引入类型(对象)属性注入:

    • @Autowired:spring提供的 默认根据类型注入
    • @Resource:javaEE 规范 默认根据名称注入
  • 八种基本类型+日期类型+数组+集合类型属性注入:

	<bean>

    ​	<property name="name" value="urbaneh">

    </bean>

SpringBoot的属性注入:

  • @Value:通过yml文件可将属性注入
@Value("${name}")
private String name;
name: UrbaneH # 字符串
age: 18 # int
price: 12.12 # float & double
arrs: 12,12,34,456 # 数组,需要使用,进行隔开
lusts: zhangsan, lisi, wangwu # 列表,需要使用,进行隔开
tf: true # 布尔值
times: 2012/12/12 12:12:12 # 默认使用 yyyy/mm/dd HH:MM:ss的格式
maps: "{'name': 'UrbaneH', 'age': '18'}" # map类型,在双引号内用单引号包裹键值对 注入时必须使用#{${属性}} 使用json格式赋值
  • @ConfigurationProperties:对象赋值
orders:
  id: 20
  name: UrbaneH
  price: 99.99
    public void setName(String name) {
        this.name = name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setPrice(float price) {
        this.price = price;
    }

注意:使用次方法,一定要构建SET函数,否则将无法获取到相应的数据,@ConfigurationProperties需要设置Value属性,属性的值与对象名称相同;

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
<!--            不会将此依赖传递下去-->
            <optional>true</optional>
        </dependency>

用于配置注解处理器以生成元数据,作用不是很大,主要是看着舒服一点然后会有提示,没有报错;

集成JSP模板

<!--        c标签库-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

<!--        让tomcat可以解析jsp-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

一般jsp文件时放在main文件夹中的webapp文件夹当中

且需要加一个头部,在jsp文件当中 <%@page pageEncoding="UTF-8" contentType="text/html; UFT-8" isELIgnored="false" %>

当文件都准备完成时,需要在application.yml文件当中配置jsp视图前缀和后缀

spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp

prefix : 是指访问页面的前缀,指定页面存放的文件夹

suffix : 是指文件的后缀名,常见的后缀名有html,jsp,php,txt,mp3

server:
  servlet:
    jsp:
      init-parameters:
        development: true

打开jsp的开发模式,即修改jsp模板后,不需要重启SpringBoot服务,刷新即可

MyBatis的整合

  • 引入依赖:SpringBoot-web,mysql相关,mysql驱动,druid数据源,mybatis相关的(mybatis-spring-boot-stater)包含了(mybatis和mybatis-spring)
				<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.7</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
  • 书写配置:

    • 开启注解扫描:省略

    • 创建数据源:

      • 指定数据源类型
      • 指定数据库的驱动
      • 指定url
      • 指定username
      • 指定password
        # 整合mybatis的相关配置
        datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          # mysql 8.x.x 的驱动
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/bootssm?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=true
          username: root
          password: 88888888
      
    • 创建sqlsessionFactory

      • 指定mapper配置文件的位置
      • 指定实体所在的包位置(起别名)
      mybatis:
        # 指定mapper的配置文件位置 创建文件时一定要使用/而不是.
        mapper-locations: classpath:com/urbaneh/mapper/*.xml
        #  指定实体类的包名 默认别名: 类名 类名首字母小写
        type-aliases-package: com.example.demo.entity
      
    • 创建DAO

      • 指定DAO接口所在的包:在入口类使用注解==@MapperScan(“com.example.demo.dao”)==用来扫描dao接口所在的包,同时将所有dao接口在工厂中创建对象
    • 创建事务管理器 开启注解式事务生效 省略

  • 测试:

    • 建表
    • 开发实体类:在entity文件夹中创建表的实体类,将表内的列声明为变量,生成GET和SET方法以及带参和不带参的构造方法;
    • 开发DAO接口
    public interface UserDao{
        // 插叙所有
        List<User> findAll();
    }
    
    • 开发Mapper配置文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.urbaneh.dao.UserDao">
        <select id="findAll" resultType="User">
            SELECT * FROM user;
        </select>
    </mapper>
    
    • 开发Service接口
    public interface UserService {
    
        List<User> findAll();
    }
    
    • 开发ServiceImpl实现类
    @Service
    @Transactional
    public class UserServiceImpl implements UserService {
        private UserDao userDao;
    
        @Autowired
        public UserServiceImpl(UserDao userDao) {
            this.userDao = userDao;
        }
    
        @Override
        public List<User> findAll() {
            return userDao.findAll();
        }
    }
    
    • 测试ServiceImpl

本地测试

  • 引入结合junit与SpringBoot依赖,如果是官网生成的代码文件中会自带;
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
<!--            只能在测试里面使用-->
            <scope>test</scope>
        </dependency>
  • 启动SpringBoot应用,才能启动Spring工厂,注入测试对象,@SpringBootTest
    • 修饰范围:用在类上;
    • 作用:用来启动本地Spring环境

热部署

SpringBoot提供了全局项目热部署,在开发过程中修改了部分代码以及相关配置文件后,不需要每次重启SpringBoot服务来使其生效,开启热部署后,只需修改后等待几秒即可立即生效;

如果想使用热部署(devtools)工具就必须每一个项目都引入热部署的依赖

				<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <!--optional表示该依赖是否可以传递,true表示不传递只在当前项目可用-->
            <optional>true</optional>
        </dependency>

如果使用IDEA需要开启自动构建项目!

开启高级设置中 -> 编译器 -> 即使当前正在运行所开发的应用程序也允许启动自动生成!

日志处理

SpringBoot内集成了logback日志;

ALL TRACE DEBUG INFO WARN ERROR FATAL OFF

  • OFF:关闭,最高级别 不打印日志;
  • FATAL:致命,指明非常严重的可能会导致应用终止执行的错误事件;
  • ERROR: 错误,指明错误事件 但应用程序可能还会继续运行;
  • WARN: 警告,指明可能潜在的危险状况;
  • INFO: 信息,指明描述信息,从粗粒度上描述了应用运行过程;
  • DEBUG: 调试,指明细致的事件信息,对调试应用最用;
  • TRACE: 跟踪,指明程序运行轨迹,比DEBUG级别的粒度更细;
  • ALL: 所有,所有日志级别,包括定制级别;

级别越高输出的日志信息越少;

日志一般分为两类

  • 一类是rootlogger(根全局日志):用来监听项目中所有的运行日志 包括引入依赖jar中的日志;
  • 一类是logger(指定包级别日志):用来监听项目中指定包中的日志信息;

在SpringBoot中默认的日志级别是INFO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值