springboot学习笔记

在这里插入图片描述
驼峰命名法
必须使用下划线分割
认下划线

@MapperScan(basePackages=“com.speoki.springboot.mapper”)

在这里插入图片描述
application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456

Run Anything(double ctrl)

mvn 项目名  clean

将之前生成的清除掉

配置mapper

关于Mapper映射文件存放的位置的写法有两种

方法一

将Mapper接口和Mapper映射文件存放到src/main/java同一个目录下

在pom.xml中手动指定文件夹为resources

<!--手动指定文件夹为resources-->
  <resources>
      <resource>
          <directory>src/main/java</directory>
          <includes>
              <include>**/*.xml</include>
          </includes>
      </resource>
  </resources>

方法二

将Mapper接口和Mapper映射文件分开存放
Mapper接口类存放到src/main/java目录下
Mapper映射文件存放到resources(类路径下)
在springboot核心配置文件中指定mapper映射文件位置

在application.properties中设置

mybatis.mapper-locations=classpath:mapper/*.xml

在这里插入图片描述
在这里插入图片描述
yes
在这里插入图片描述

Spring集成Mybatis的注解

  1. @Mapper
  2. @MapperScan

springboot项目下使用事务

事务是完整的功能/业务
事务只跟什么SQL语句有关系
事务只跟DML语句有关系:增删改
DML,DQL,DDL,TCL,DCL

开启事务
在这里插入图片描述

springboot版本小于2.0的还需要加
在这里插入图片描述

RestController的作用

在这里插入图片描述
返回的是json对象

该方法支持get和post请求(default)


    @RequestMapping(value="/student",method = {RequestMethod.GET,RequestMethod.POST})
    public @ResponseBody Object student(Integer id){
        Student student  = studentService.queryStudentById(id);
        return student;
    }

RESTFul

在这里插入图片描述
Springboot开发RESTFul主要通过

  1. @PathVariable
  2. @PostMapping
  3. @DeleteMapping
  4. @PutMapping
  5. @GetMapping

方法请求混淆

方法一:替换

  //@RequestMapping(value="/student/detail/{id}/{status}")
    @DeleteMapping(value="/student/detail/{id}/{status}")
  
```

### 方法二换位
![在这里插入图片描述](https://img-blog.csdnimg.cn/4bba186513924a169ae8ff91d8b096d1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

```java
//@RequestMapping(value="/student/detail/{id}/{status}")
    @DeleteMapping(value="/student/detail/{id}/{status}")
    public Object student2(@PathVariable("id")Integer id,@PathVariable("status")Integer status){
        Map<String,Object>retMap = new HashMap<>();
        retMap.put("id",id);
        retMap.put("status",status);
        return retMap;
    }
    //以上这么写可能会出现请求错误

    @DeleteMapping(value="/student/{id}/detail/{city}")
    public Object student3(@PathVariable("id")Integer id,@PathVariable("city")Integer status){
        Map<String,Object>retMap = new HashMap<>();
        retMap.put("id",id);
        retMap.put("city",status);
        return retMap;
    }
```

![在这里插入图片描述](https://img-blog.csdnimg.cn/0971cd468c7047869289ca4e316ebf92.png)

### RESTful原则
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb5ce4e2239d4b14b01fec05dcf8c1c3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

## springboot继承redis

1.添加依赖
![在这里插入图片描述](https://img-blog.csdnimg.cn/3626ce57d9a8455cbbe62618557a146f.png)
2.配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/cae2a84618e74226a8e52e7a5f273d2b.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/8712ae3ad5764bfd83af2ed7a9019108.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/89dfe22d215541968d8af988faeb9516.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)


![在这里插入图片描述](https://img-blog.csdnimg.cn/40ff829244a548568ce01eeaad0ceefd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/a8b5b90a22e64f5783a43c8c82520467.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/41711a1693ac4d2dad346f0fb648fa6e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_15,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/85292de4a132473a832007d51efffdba.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/48c923ad0f824765be05236493a23526.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_18,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/bab3743aa4924584b567be8ae8400f2b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

### Springboot继承Dubbo分布式框架
![在这里插入图片描述](https://img-blog.csdnimg.cn/0417e1733cf345fdae97e86cd8221518.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d6f9afbfefe8426ab37e2dc2c8ce88de.png)

## Dubbo
maven项目创建
![在这里插入图片描述](https://img-blog.csdnimg.cn/6f88a6eff94d4bd1ad95b0664c05cea1.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/9cfad70f62454e94b97ed74f1113abf0.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3fccadbe25b04066b2186f0486af0b47.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/797c058931394bcc8a8cf98d030b2dc4.png)

provider核心配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/098800793b334f2da118c5f46e4debbf.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/d38722f66dd44872964e1cc03d6e9ea7.png)
consumer核心配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/1b5385f089c84946a9946e3c0af96493.png)



### interface

#### Controller

![在这里插入图片描述](https://img-blog.csdnimg.cn/09a7db257fe84c8f813a55aa47c7fee7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
### 接口的实现类放在provider
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1996c8cb1d24551a8a0f55dcbb39e79.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_18,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1d32d10cd06d4c4398cc0c050e93c3e4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3f10c07aee0445bd81782061ae8f969f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

加入`@Component`和`@Service注意在什么包下)`
![在这里插入图片描述](https://img-blog.csdnimg.cn/41d82e6277a544ea8afa926285d25b58.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

接口服务暴露配置1 ServiceImpl
![在这里插入图片描述](https://img-blog.csdnimg.cn/776af14433ed4f1e94e869d2158cba19.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
接口服务暴露配置2 Controller
![在这里插入图片描述](https://img-blog.csdnimg.cn/a496348aacef4835972cd4d65eda6cf1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

开启dubbo配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/ba90b1a374324d05be29d3737f5d64e7.png)

### provider 
配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae3baba888874c8b92ffc49caf43ed1c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/024ada2161d44d19b48cd3a5c11f67d1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/28b4c4567d62407b96ba651a8517bc76.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/628357686c054ce49719a07e6f467ed9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/35767ff087ec47cd8fdeb2a16bcf2a2e.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/0d94a15c3c2a4f3cadbd03f9756e025d.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/4d768a857a7e43aa992a818489447989.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/73f291f04bab451899d683ac9bc83058.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述](https://img-blog.csdnimg.cn/12f8461c6e2c4be5b2599206112a901b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/988987b78d5845e9b9c6f96eb4bcab4d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)


 SpringBoot 创建非web工程:直接获取ConfigurationApplicationContext

 SpringBoot 创建非web工程:实现CommandLineRuner,重写run方法

### 关闭logo
在入口类写上



```java
@SpringBootApplication
public class Application{

public static void main(String[]args){
//获取入口SpringBoot类
SpringApplication springApplication = new SpringApplication(Application.class);
//设置它的属性
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
}
```



```java
@SpringBootApplication
@MapperScan(basePackages="com.speoki.springboot.mapper")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

```


### 修改启动logo

https://patorjk.com/software/taag/#p=display&f=Blocks&t=speoki

textAcII网址




SpringBoot使用拦截器
a.定义一个拦截器,实现HandlerInterceptor接口
b.创建一个配置类,即在SpringMVC配置文件中使用mvc:interceptors

### servlet使用
创建一个servlet它要继承HttpServlet
在web.xml配置文件中使用servlet servlet-mapping
1.  方式一
`@WebServlet` ,`@ServletComponentScan`

![在这里插入图片描述](https://img-blog.csdnimg.cn/684fe65dd925490f9e61364f7ef85c05.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
2. 方式二

(1. 配置类
@Configuration该注解将此类定义为配置类
相当于xml配置文件

@Bean ServletRegistrationBean 
@Bean是一个方法级别上的注解,主要用在配置类里,相当`<beans><bean id="" class=""><beans>`
```java
@Configuration
public class ServletConfig {
@Bean
public ServletRegistrationBean myServletRegistrationBean(){
    ServletRegistrationBean sRBean = new ServletRegistrationBean(new Myservlet(),"myservlet");
    return sRBean;
}
}
```

(2@WebServlet


## 过滤器
![在这里插入图片描述](https://img-blog.csdnimg.cn/35f6947f72e84a01adaeed610cf8edf7.png)
//@WebFilter(urlPatterns = "/myfilter")
```java
package com.speoki.springboot.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(urlPatterns = "/myfilter")
public class Myfilter  implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("你已经进入过滤器");
        filterChain.doFilter(servletRequest, servletResponse);

    }
}

```
![在这里插入图片描述](https://img-blog.csdnimg.cn/362757a76a6b4eed87fea731bed2fd41.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述](https://img-blog.csdnimg.cn/e70607dac33149fea116582b27bd8efd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
```java
package com.speoki.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication//开启spring配置
//@ServletComponentScan(basePackages="com.speoki.springboot.servlet")
@ServletComponentScan(basePackages="com.speoki.springboot.filter")

public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

```


### 设置字符编码

过时的用法:
![在这里插入图片描述](https://img-blog.csdnimg.cn/5ff5524a9532485b89da349a2ba80bf9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
```java
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.http.encoding.charset=utf-8
```

新的用法

application.properties
```java
#关闭springboot的http字符编码的支持
#只有关闭该选项之后springboot字符编码过滤器才生效
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
server.servlet.encoding.enabled=true

```
![在这里插入图片描述](https://img-blog.csdnimg.cn/aa9f4f4735e14fd6b7d71d7fb0794fea.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
## 打包与部署

首先确保项目可以运行

在pom.xml中设置打包方式
```xml

    <!--修改打包方式-->
    <packaging>war</packaging>

----
  <build>
        <!--指定打war包名称-->
        <finalName>SpringBootWar</finalName>
        <resources>
            <resource>
                <directory>src/main/webapp</directory>
            <targetPath>META-INF/resources</targetPath>
<includes>
    <include>*.*</include>
</includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <!--编译打包插件-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
```



*入口类继承SpringBootServletInitializer*
然后重写方法

```java

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

        //参数为当前springboot启动类
        //构建新资源
        return builder.sources(Application.class);

    }
}


```




先clean 然后package

![在这里插入图片描述](https://img-blog.csdnimg.cn/463cfcd2d2094e5c8171a201a2a9b7b5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_17,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8aa3ed95174d4b1ca69104550ad8c18b.png)
###  启动tomcat的方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/6a323db860ec45629aad8d90721f1356.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ab7ea798022e4ec4a61bd5da082d6eef.png)
## 打jar包需要的
![在这里插入图片描述](https://img-blog.csdnimg.cn/6df534cd4f794e2db714049f952f0f0f.png)


都还需要的
```java
   <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
```


![在这里插入图片描述](https://img-blog.csdnimg.cn/d5f7269ddf5f41c3b5bee73d0f944240.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/dc498dba941e4ded81e3093164013806.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/65ad3dafa50b4c1193d152159867dd83.png)
lombook
@Slf4j(cintroller)
log.info("")


![在这里插入图片描述](https://img-blog.csdnimg.cn/a2ca13e6e050437c9f70ae25637a1d21.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4748361cc54e4d7c9add4796c43ed8ee.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/56cfdd0e76a3423c8286587b18e7608b.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/493b064926bf418099ece2957d13d041.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/7cb7c0b8018a4384b35d0c5413a52017.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Blb2tp,size_14,color_FFFFFF,t_70,g_se,x_16)
root默认为空


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值