SpringBoot-配置、使用详解

本文详细介绍了SpringBoot的特点,如自动配置、简化Maven和内嵌Tomcat等,并逐步讲解了如何创建项目结构、打包运行、配置IDEA的自动编译以及yml语法。还涉及SpringBoot的配置读取、多环境配置、日志使用、Thymeleaf集成、静态资源处理、MVC配置、数据源集成、MyBatis整合以及事务管理等内容,为SpringBoot的深入理解和实践提供了全面指导。
摘要由CSDN通过智能技术生成

一、SpringBoot的特点:

  • 1.使用配置注解,不需要xml;
  • 2.快速搭建,开发;
  • 3简化maven;
  • 4方便开发
  • 5内嵌tomcat配置简单
  • 6内置健康检查、监控等
  • 7自动配置,让配置更加简单

二、SpringBoot基本的使用:

1.项目的基本结构:

src
mian
java
包名
类名
resoucres
yml配置文件
templates临时文件、模板目录
static静态资源

2.打包单独运行:

1. 导入打包插件:

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

2.打包

打包的地方

3.运行jar包

java -jar 所要运行的项目.jar

4.热部署:

导入依赖包:
	<dependency>
	 <groupId>org.springframework.boot</groupId>
 	<artifactId>spring-boot-devtools</artifactId>
		 </dependency>
编译代码:
 ctrl + F9
3.配置IDEA的自动编译功能

配置setting的自动编译
按 ctrl +shift + alt + / -> registry -> 如下

三.yml语法:

多个级之间用:分类,并且换行缩进 , 值不用换行 , 值前面有个空格

四.SpringBoot读取配置

一.使用@Value标签

配置文件

user:
 username: ls
age: 99
  password: 456
绑定配置的对象

@Component
public class User {

//@Value :从配置文件中取值   SPEL
@Value("${user.username}")
private String username = "zs";

@Value("${user.password}")
private String password = "123";

@Value("${user.age}")
private int age = 18;
. . . . . . 

二.使用@ConfigurationProperties

配置文件

employee:
 username: ls
password: 456
age: 99

绑定配置的对象

@Component
@ConfigurationProperties(prefix = "employee")
public class Employee {
private String username = "zs";
private String password = "123";
private int age = 18;
@ConfigurationProperties : 自动的根据前缀从配置中过滤出配置项目,然后根据当前对象的列名进行匹配,自动赋值

五.多环境配置

1.方式一

spring:
profiles:
active: test #激活(选择)环境test

spring:
profiles: dev #指定环境名字dev
server:
port: 9999

spring:
profiles: test #指定环境名字test
server:
port: 8888
注意:开在外部指定配置:java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

2.方式二

通过配置文件的名字来识别环境

application-dev.yml

server:
port: 9999
application-test.yml

server:
port: 8888
application.yml

spring:
profiles:
active: test
#根据文件名字配置 application-dev.properties

六.日志的使用:

1.基本使用

private Logger logger = LoggerFactory.getLogger(MySpringBootTest.class);


logger.error(“我是一个error日志…”);
logger.warn(“我是一个warn日志…”);
logger.info(“我是一个info日志…”);

logger.debug(“我是一个debug日志…”);
logger.trace(“我是一个trace日志…”);
基于Lombok打印

1.导入依赖

org.projectlombok lombok 1.16.10 provided

2.安装Lombok的idea插件

3.打印日志

@RestController
@Slf4j
public class HelloController{

...
	log.trace("全部信息...");
	log.debug("调试信息...");
	log.info("详细信息...");
	log.warn("警告信息...");
	log.error("错误信息...");

}
2.配置日志

#logging.level.cn.itsource=error
#logging.file=my.txt
#logging.file.max-size=1KB
#logging.pattern.console="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
3.指定配置文件配置logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--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.itsource" level="error" additivity="false">
    <appender-ref ref="stdout"/>
    <appender-ref ref="file"/>
</logger>
</configuration>

七.SpringBoot集成Thymeleaf:

1.模板引擎的原理

2.jsp的原理

集成Thymeleaf

1.导入依赖

org.springframework.boot spring-boot-starter-thymeleaf 2.创建模板 resources/templates/hello.html Title

成功!

<div th:text="${msg}">这是显示欢迎信息</div>
3.编写controller

@Controller
public class HelloController {
@RequestMapping("/index")
public String hello(Model model){
model.addAttribute(“msg”,“后面有人,认真听课” );
return “hello”;
}
}
4.编写主配置类

5.Thymeleaf的自动配置原理

@EnableAutoConfiguration 开启自动配置功能,通过一个AutoConfigurationImportSelector导入选择器去扫描 spring-boot-autoconfigure-2.0.5.RELEASE.jar 自动配置包下面的 spring.factories 文件中的很多很多的自动配置的类
而:ThymeleafAutoConfiguration 是的Thymeleaf的自动配置 ,在这个自动配置类里面通过一个ThymeleafProperties去读取配置文件中的配置(也有默认配置) ,来自动配置Thymeleaf,比如Thymeleaf的视图解析器的自动配置如下:

@Bean
@ConditionalOnMissingBean(name = “thymeleafViewResolver”)
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();

return resolver;
}
6.Thymeleaf的语法

八.静态资源:

1.静态资源目录

resource/static
2.webjars

导入jquery依赖 ( http://www.webjars.org/)

org.webjars jquery 3.4.1 导入jquery的js

3.首页

resources/index.html
4.图标

resources/favicon.ico

九.SpringBoot中的MVC配置:

1.配置拦截器

定义拦截器

@Component
public class MyHandlerInterceptor extends HandlerInterceptorAdapter {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    System.out.println("preHandle................:"+request.getRequestURI());
    return super.preHandle(request, response, handler);
}

}
注册拦截器

@SpringBootApplication
public class ApplicationConfig implements WebMvcConfigurer {

@Autowired
private MyHandlerInterceptor myHandlerInterceptor;
/**
 * 注册拦截器
 * @param registry :拦截器的注册器
 */
@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(myHandlerInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
}

2.添加视图控制器

@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/xx").setViewName(“hello2.html”);
}
当访问/xx 定位到 templates/hello2.html

十.集成DataSource:

1.导入依赖

    <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: 123456
url: jdbc:mysql:///ssm
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSo

十一. 集成MyBatis:

1.导入依赖

org.mybatis.spring.boot mybatis-spring-boot-starter 1.1.1 2.配置Mybatis

mybatis:
mapper-locations: classpath:cn/itsource/mapper/*Mapper.xml
3.配置Mapper接口扫描包

@SpringBootApplication
@MapperScan(“cn.itsource.web.controller.mapper”)
public class ApplicationConfig {

}

十二.集成事务:

1.使用注解方式

开启事务管理器

@SpringBootApplication
@MapperScan(“cn.itsource.web.controller.mapper”)
@EnableTransactionManagement
public class ApplicationConfig{
…}
service打事务标签

@Transactional
@Service
public class EmployeeServiceImpl
2.使用xml方式配置

导入依赖

org.springframework.boot spring-boot-starter-aop 配置事务xml
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<aop:config>
    <aop:pointcut expression="execution(* cn.itsource.web.controller.service..*.*(..))" id="coreServicePointcut"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="coreServicePointcut"/>
</aop:config>

<!-- aop应用事务管理 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="select*" read-only="true"/>
        <tx:method name="*" propagation="REQUIRED" />
    </tx:attributes>
</tx:advice>

导入xml配置


@ImportResource(“classpath:applicationContext-service.xml”)
public class ApplicationConfig

十三.PageHelper的使用:

1.导入依赖

com.github.pagehelper pagehelper-spring-boot-starter 1.2.3 2.编写查询语句 select id,username,realName from t_employee 注意:用了pagehelper之后 ,查询总条数的sql不用写 , limit 不用写 , 如上:

3.查询的service

@Override
public Page selectPage() {
PageHelper.startPage(1,5 );
Page page = (Page) employeeMapper.selectPage();
return page;
}
PageHelper.startPage(1,5 ):设置当前页和每页条数

Page :是pagehelper自己封装的页面对象,如同我们以前的PageList ,里面有总条数,列表,总页数等等

4.获取结果

Page page = employeeService.selectPage();
System.out.println(“总条数:”+page.getTotal());
for (Employee employee : page.getResult()) {
System.out.println(employee);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值