详细了解SpringBoot-web程序

SpringBoot基本使用

一、SptingBoot的项目结构
src 
--main
	--java
	--resources
		--static //静态资源目录 
		--templates //模板页面目录,如:jsp ,ftl 						            
		--  application.properties/application.yml //默认配置文件
二、独立运行简单的web项目

1、导入打包插件

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

2、打包
打包命令(package)会把jar打包到target目录
在这里插入图片描述3、运行
java -jar xxx.jar

=======================================================================================================================

三、SpringBoot读取配置

首先我们来认识一下yml脚本语言
因为SpringBoot使用一个全局的配置文件,而yml文件是一种脚本语言,它的作用就是会修改SpringBoot自动配置的默认值,比如端口号之类的
yml语法:
k:(空格)v:表示一对键值对(必须有空格)
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

一、使用@Value注解的方式

配置文件(application.yml):
获取 username的值(yymq)

itsource:
  username: yymq

测试:从application.yml文件获取到值
成功获取到了 itsource 下面的 username的值

@Controller
public class HelloController  {
    @Value("${itsource.username}")
    private String username;
	System.out.println(username);
	}
二、使用@ConfigurationProperties注解的方式

@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;

四、 SpringBoot的多环境配置

为什么要有多环境配置呢?
因为一套代码要在多种环境运行(开发,测试,上线),所以我们的配置文件要支持多种环境

一、:在同一个配置文件中
#主环境配置
spring:
  profiles:
        active: dev #激活(选择)环境test
---
spring:
  profiles: dev
server:
  port: 8080 #指定开发环境名字dev
---
spring:
  profiles: test
server:
  port: 8888 #指定测试环境名字testmapper
二、:在多个配置文件
开发环境的配置文件
application-dev.yml:
server: port: 9999

测试环境的配置文件
application-test.yml:
server: port: 8888

//下面这个是主配置文件,根据文件名字配置
application.yml
spring: profiles: active: test #根据文件名字配置 application-dev.properties

==--------------------------------------------------------------------------------------------------------------------------------------

五、模板引擎Thymeleaf

Thymeleaf简介:
thymeleaf就是一个模板引擎,实现页面内容动态化的技术思想
本质:jsp+jstl的替代方案

其他的模板引擎还有JSP、Freemarker等

=====下面我们重点看看SpringBoot推荐的Thymeleaf模板引擎入门:
1、导入依赖:

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

2、创建模板 resources/templates/thy.html

<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>成功!</h1>
<!--使用语法th:text 将div里面的文本内容设置为 -->

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

</body>
</html>

3、编写controller测试运行

    @RequestMapping("/thy")
    public String thy(Model model){
        model.addAttribute("msg", "我是thymeleaf模板引擎");
        return "thy";
    }
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; }
``

六、配置拦截器

之前我们的Springmvc里面都有一个拦截器,用来做登录拦截,那我们来实现一下

一、首先自定义一个拦截器:并且来继承HandlerInterceptorAdapter

@Component
public class MyHandlerInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        System.err.println("执行了拦截器:我被拦截了"+request.getRequestURI());

        return super.preHandle(request, response, handler);
    }
}

**二、我们需要在主配置类中注册拦截器:并且实现WebMvcConfigurer **

@SpringBootApplication
@MapperScan("cn.itsource.hello.mapper")
public class ApplicationConfig implements WebMvcConfigurer {
    //注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myHandlerInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
    }
}
七、集成DataSource

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.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

2、在application.yml中自动配置四大金刚

  #配置JDBC
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql:///test
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
八、集成mybatis

1、导入依赖

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

2、配置mybatis:在application.yml文件中进行

注意:在主配置类中要打@MapperScan注解!!!!
并且里面填写mapper包的的全限定名

#配置Mybatis
mybatis:
  mapper-locations: mapper/*Mapper.xml
九、集成事务

1、使用注解的方式开启事务
在主配置类中只需要打上@EnableTransactionManagement注解即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值