spring-boot进一步认识

本文深入探讨Spring Boot框架的高级应用,包括配置类与控制器分离、热启动、多环境配置、日志框架定制、Thymeleaf集成、静态资源处理及数据源配置等,为开发者提供全面的技术指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring-Boot 进一步了解

1.配置类和控制器分离

配置类的注解

@SpringBootApplication—带扫描,自动配置=

相当于

​ @Configuration

​ @ComponentScan

​ @EnableAutoConfiguration

常见报错可能情况

1.配置类run

2.没有导入web

2.springboot项目结构

static----静态资源文件

templates----模板文件jsp等

application.properties----配置文件

3.打包,独立运行

1.导包

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

2.打包在这里插入图片描述### 4.热启动

导包

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

5.yml

语法

k:(空格)v:表示一对键值对(空格必须有);

以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

server:

​ port: 8081

​ path: /hello

属性和值也是大小写敏感;

6.读取配置-配置文件的注入

1.多个配置读取到一个类中

<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

写一个对应的类来获取需要的属性值

@ConfigurationProperties注解

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

要提供getter、setter方法

属性 perfix=“jdbc”:从配置中通过前缀过滤配置项,进行同属性名的配置

@Component交给spring管理


2.读取一个配置

@Value("${server.port}")
private String port;

"${server.port}"找值—@Value将值赋给port

7.springboot多环境

1.通过Application.yml 单个文件配置

区分不同的环境

#多环境的配置
#这里是激活我们需要的环境
spring:
  profiles:
    active: xxx #这里激活的要对应下面的profiles的名字
#这里表示是我们提供的环境 ---是区分
---
server:
  port: 9999
spring:
  profiles: dsq
---
server:
  port: 8888
spring:
  profiles: xxx  #指定属于哪个环境

2.多个文件配置

文件名称:application-xxx 标准命名

主配置文件application.yml中激活其他我们需要的环境
在这里插入图片描述激活特定环境

1、在配置文件中指定 spring.profiles.active=dev

​ 2、命令行: 部署环境

​ java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod;

​ 可以直接在测试的时候,配置传入命令行参数

​ 3、虚拟机参数; 开发环境

​ -Dspring.profiles.active=dev

8.springboot 测试

1.导包

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

@RunWith(SpringRunner.class)

@SpringBootTest(classes = ApplicationConfig.class)

9.springboot 日志框架

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan="true" scanPeriod="1 seconds" -->
<configuration debug="true" >

    <!-- 日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n"/>

    <!--ConsoleAppender 控制台打印-->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--定义控制台输出格式-->
        <encoder>
            <!--采取了上面的格式-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--文件格式的输出日志-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--存放日志的位置-->
        <file>logs/springboot.log</file>
        <!--根据大小和事件滚动保存-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--文件名称-->
            <fileNamePattern>logs/springboot-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
            <!--单个文件最大保存的大小-->
            <maxFileSize>1KB</maxFileSize>
            <!--最多保存的历史-->
            <maxHistory>30</maxHistory>
            <!--总大小-->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>

    </appender>

    <!--root是默认的logger  全局 这里设定输出级别是debug-->
    <root level="info">
        <!--定义了两个appender,日志会通过往这两个appender里面写-->
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>
    <!--设置局部,指定的包-->
    <!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
    <!--additivity表示要不要使用rootLogger配置的appender进行输出-->
    <logger name="cn.dsq" level="warn" additivity="false">
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </logger>
</configuration>

1.日志打印器

	private static final Logger log = 
					LoggerFactory.getLogger(Hello.class);

后面用lombok插件只需要一个注解@Slf4j

2.lombok

导包–maven repository 仓库中去找需要的包

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.12</version>
    <scope>provided</scope>
</dependency>

装插件

file—setting ----plugins

10. thymeleaf 集成

1.导包

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

2.创建模板(Html)

<html xmlns:th="http://www.thymeleaf.org">
    
</html>

3.Controller访问

11. 静态资源处理

http://www.webjars.org

导入jquery

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.4.1</version>
</dependency>

导入jquery的js

<script src="/webjars/jquery/3.4.1/jquery.js"></script>

首页和图片

//首页
resources/index.html
//图片
resources/favicon.ico

12. Mvc Configur

1.拦截器interceptor

​ 1.自己写个类 实现HandlerInterceptor

/**
 * 自定义的拦截类
 */
@Component
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截成功拦截成功----------------");
        return true;
    }
}

​ 2.配置文件注册 配置类要实现 WebMvcConfigurer 并覆写对应方法

/**
	 * 拦截器的配置
	 * @param registry
	 */
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		//配置拦截器,并添加拦截的资源,以及放行的请求
		registry.addInterceptor(loginInterceptor)
            .addPathPatterns("/**").excludePathPatterns("/login");
	}

2.viewController–很少使用

类似拦截器的配置,也要在配置器中覆写一个方法

 @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/xx").setViewName("hello2.html");
    }

13. datasources

1.导包

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>
        <!-- mysql 数据库驱动. -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
         <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

2.手动配置

  jdbc:
    username: root
    password: 123456
    url: jdbc:mysql:///ssm
    driver-class-name: com.mysql.jdbc.Driver
 @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource ;
    }

3.自动配置-----------推荐使用

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql:///crm
    driver-class-name: com.mysql.jdbc.Driver

14. 集成Mybatis

1.导包

 <dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>1.1.1</version>
 </dependency>

2.配置

#mybatis
mybatis:
  mapper-locations: classpath:cn/dsq/springboot/mapper/*Mapper.xml

15.PageHelper

1.导入包

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>

2.service实现

  public Page<Employee> findPage(Object query){
        //设置当前页以及每页条数
        PageHelper.startPage(1,5);
        //返回查询结果
        return employeeMapper.findPage(query);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值