当前位置:   article > 正文

Spring-Boot框架_springboot框架

springboot框架

1. spring boot 简介

Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。

1.1 springboot的好处

① 创建独立的 Spring 应用程序
② 嵌入的 Tomcat,无需部署 WAR 文件
③ 简化 Maven 配置
④ 自动配置 Spring
⑤ 开箱即用,没有代码生成,也无需 XML 配置。

1.2 spring boot 快速入门

(1)JDK 环境必须是 1.8 及以上,传送门:jdk1.8.191 下载
(2)后面要使用到 Maven 管理工具 3.2.5 及以上版本.
(3)开发工具建议使用 IDEA

创建步骤

 

 

 默认springboot扫描的包为主启动类所在的包以及子包。

测试:

  1. @RestController
  2. public class Hello {
  3. @GetMapping("/hello")
  4. public Map<String ,Object> hello(){
  5. Map<String,Object> map=new HashMap<>();
  6. map.put("name","wang");
  7. return map;
  8. }
  9. }

 运行程序

 1.3 springboot的配置文件

 第一种: properties属性文件

  # 修改springboot中tomcat端口号.
    server.port=8888

第二种:  yml文件
    server:
    port: 6666

不管是哪种,他们的名字必须以application开始。
如果两个配置文件同时存在,而且有些内容一样。按照properties的优先级高。
如果有些不一样,两个配置文件不一样的会合并在一起。

yml文件的语法

  1. student:
  2. id: 1
  3. name: xiaoming
  4. age: ${a.age}
  5. hobby:
  6. - LOL
  7. - DNF
  8. - CF
  9. - LOL
  10. lists:
  11. - LOL
  12. - DNF
  13. maps:
  14. k1: v1
  15. k2: v2
  16. sets:
  17. - LOL
  18. - DNF
  19. - CF
  20. - LOL
  21. birth: 2019/12/12
  22. a:
  23. age: ${random.int(1,100)}

Properties 没有层级关系 使用=赋值

yml 有层级关系 使用: 赋值

两种语法的配置是互补的

读取springboot配置文件中的内容

在application.properties中写入

  1. student.name=zs
  2. student.age=18
  3. student.hobby[0]=sing
  4. student.hobby[1]=swimming
  5. student.map.clazz=qy151

创建实体类 将读取application.properties配置文件中的值并赋值给Student类中的属性

  1. @Data
  2. @Component //该类对象的创建和销毁都有spring容器来管理
  3. @ConfigurationProperties(prefix = "student") //读取springboot中的配置内容,读取以前缀为student
  4. public class Student {
  5. String name;
  6. String age;
  7. String[] hobby;
  8. Map<String,Object> map;
  9. }

 

读取application.yml配置文件中的值并赋值给Student类中的属性

  1. server:
  2. port: 8082
  3. student:
  4. name: zs
  5. age: 18
  6. hobby:
  7. - sing
  8. - dance
  9. - rap
  10. - basketball
  11. map:
  12. clazz: qy151

 

@Value 只能放在我们的类属性上。而且它只能读取基本类型和字符串类型。

1.4 profiles配置详解

为什么要使用profiles?

在开发中,一般有两种环境
    1,生产环境  [项目上线,客户在使用中,就是生产环境]
    2,开发环境[就是开发环境,不解释]
    有时候开发环境和生产环境的配置方法是不一样的,那么如何快速的切换呢,这里就要使用profiles文件

使用方法

1,创建applicatin-developer.properties
 
server.port=8081
2,创建applicatin-product.properties
 
server.port=8082
3,修改application.properties
 
#server.port=8080
spring.profiles.active=developer
4. 测试
5,总结
在application.properteis里面激活哪个文件就会使用哪个端口

2. WEB三大组件的注册

web的三个组件: Servlet和Filter以及Linstener监听器。

2.1 注册Servlet

创建Servlet

  1. public class MyServlet extends HttpServlet {
  2. @Override
  3. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  4. System.out.println("这时自己定义的servlet~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  5. }
  6. }

配置类

  1. @Configuration //该类为配置类 xml文件
  2. public class MyConfig {
  3. @Bean //理解为配置文件中<bean >
  4. public ServletRegistrationBean<Servlet> registrationBean(){
  5. //创建一个Servlet注册器.
  6. ServletRegistrationBean<Servlet> registrationBean=new ServletRegistrationBean<>();
  7. registrationBean.setName("my");
  8. registrationBean.setServlet(new MyServlet());
  9. registrationBean.addUrlMappings("/my");
  10. return registrationBean;
  11. }
  12. }

2.2 注册Filter

创建Filter

  1. public class MyFilter implements Filter {
  2. @Override
  3. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  4. System.out.println("经过了过滤器");
  5. filterChain.doFilter(servletRequest,servletResponse);
  6. }
  7. }

配置类

  1. @Configuration //该类为配置类 xml文件
  2. public class MyConfig {
  3. @Bean
  4. public FilterRegistrationBean<Filter> filterRegistrationBean(){
  5. FilterRegistrationBean<Filter> filterRegistrationBean=new FilterRegistrationBean<>();
  6. filterRegistrationBean.setName("myfilter");
  7. filterRegistrationBean.setFilter(new MyFilter());
  8. filterRegistrationBean.addUrlPatterns("/*");
  9. return filterRegistrationBean;
  10. }
  11. }

3. springboot自动装配

自动装配在SpringBoot是基于EnableAutoConfiguration来实现的。springboot的自动装配启动类上的注解@SpringBootApplication有关

spring boot自动装配原理

注解@EnableAutoConfiguraction,@Configuration,@ConditionalOnClass 就是⾃动配置 的核⼼,⾸先它得是⼀个配置⽂件,其次根 据类路径下是否有这个类取⾃动配置。

 

4. springboot整合数据源

4.1 整合数据源

数据源即数据库中的数据,也就是springboot连接数据库 默认数据源使用的连接池Hikari。如果不想使用默认的连接池,我们可以引入第三方的连接池。如druid
(1)导入依赖

  1. <!--加入数据源的启动依赖: springboot启动时会加载对应的自动装配类。-->
  2. <dependency>
  3. <groupId>repMaven.org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-jdbc</artifactId>
  5. <version>2.6.7</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. </dependency>

 (2)配置数据源信息—application.properties

  1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai
  3. spring.datasource.username=root
  4. spring.datasource.password=123456

 (3)单元测试

  1. @SpringBootTest
  2. class ApplicationTests {
  3. @Autowired
  4. private DataSource dataSource;
  5. @Test
  6. void contextLoads() throws SQLException {
  7. System.out.println(dataSource.getConnection());
  8. }
  9. }

4.2  集成druid数据源

(1)引入依赖

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>druid-spring-boot-starter</artifactId>
  4. <version>1.2.8</version>
  5. </dependency>

 (2)配置文件

  1. spring.datasource.druid.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai
  2. spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
  3. spring.datasource.druid.username=root
  4. spring.datasource.druid.password=123456
  5. #初始化的个数
  6. spring.datasource.druid.initial-size=5
  7. # 最大活跃数
  8. spring.datasource.druid.max-active=10
  9. # 最大等待时间
  10. spring.datasource.druid.max-wait=3000
  11. # 最小的闲置个数
  12. spring.datasource.druid.min-idle=5

(3)测试

  1. @Test
  2. void test01() {
  3. System.out.println(dataSource);
  4. }

5. springboot整合mybatis

(1)引入依赖

  1. <dependency>
  2. <groupId>org.mybatis.spring.boot</groupId>
  3. <artifactId>mybatis-spring-boot-starter</artifactId>
  4. <version>2.2.2</version>
  5. </dependency>

(2)修改配置文件

  1. #指定映射文件的路径
  2. mybatis.mapper-locations=classpath:mapper/*.xml

(3)创建数据

  (1)创建实体类

  1. @Data
  2. public class Dept {
  3. private Integer id;
  4. private String name;
  5. private String address;
  6. }

(2)在dao层中写一个简单得查询接口

  1. @Mapper
  2. @Component
  3. public interface DeptDao {
  4. Dept findById (Integer id);
  5. List<Dept> findAll();
  6. }

(3)在mapper层中写查询语句

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.dao.DeptDao">
  4. <select id="findById" resultType="com.example.entity.Dept">
  5. select * from tb_dept where id=#{id}
  6. </select>
  7. <select id="findAll" resultType="com.example.entity.Dept">
  8. select * from tb_dept
  9. </select>
  10. </mapper>

(4)在主启动类上加入注解

  1. @SpringBootApplication
  2. @MapperScan(basePackages = "com.example.dao") //为指定包下的接口生成代理实现类
  3. public class DemoApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(DemoApplication.class,args);
  6. }
  7. }

(5) 测试

  1. @Autowired
  2. private DeptDao deptDao;
  3. @Test
  4. void test02(){
  5. System.out.println(deptDao.findById(4));
  6. }

6. springboot整合PageHelper分页插件

(1)引入依赖

  1. <dependency>
  2. <groupId>com.github.pagehelper</groupId>
  3. <artifactId>pagehelper-spring-boot-starter</artifactId>
  4. <version>1.4.2</version>
  5. </dependency>

(2) 测试

  1. @Autowired
  2. private DeptDao deptDao;
  3. @Test
  4. void test03() {
  5. PageHelper.startPage(1,10);
  6. List<Dept> list = deptDao.findAll();
  7. PageInfo<Dept> pageInfo = new PageInfo<>(list);
  8. System.out.println("当前页数"+pageInfo.getPageNum());
  9. System.out.println("当前总页码"+pageInfo.getPages());
  10. System.out.println("总条数"+pageInfo.getTotal());
  11. System.out.println("当前页码的纪录"+pageInfo.getList());
  12. }

7. springboot整合swagger

swagger它是一个接口文档----用来前后端分离的一款文档。

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。
     @Api:修饰整个类,描述Controller的作用
    @ApiOperation:描述一个类的一个方法,或者说一个接口
    @ApiParam:单个参数描述
    @ApiModel:用对象来接收参数
    @ApiModelProperty:用对象接收参数时,描述对象的一个字段
    @ApiImplicitParam:一个请求参数
    @ApiImplicitParams:多个请求参数

(1)引入依赖

  1. <dependency>
  2. <groupId>com.spring4all</groupId>
  3. <artifactId>swagger-spring-boot-starter</artifactId>
  4. <version>1.9.1.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.github.xiaoymin</groupId>
  8. <artifactId>swagger-bootstrap-ui</artifactId>
  9. <version>1.7.8</version>
  10. </dependency>

(2)创建swagger配置类

  1. @Configuration
  2. public class SwaggerConfig {
  3. @Bean //swagger中所有的功能都封装再Docket类中。
  4. public Docket docket() {
  5. Docket docket = new Docket(DocumentationType.SWAGGER_2)
  6. .apiInfo(apiInfo())//设置api文档信息
  7. .select()
  8. .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) //指定为哪些包下的类生成接口文档。
  9. .build()
  10. ;
  11. return docket;
  12. }
  13. //定义自己接口文档信息
  14. private ApiInfo apiInfo() {
  15. Contact DEFAULT_CONTACT = new Contact("名称", "www.baidu.com", "www.baidu.com");
  16. ApiInfo apiInfo = new ApiInfo("CRUD", "对tb_dept表进行增删改查", "3.0T", "www.baidu.com",
  17. DEFAULT_CONTACT, "AAA", "www.baidu.com", new ArrayList<VendorExtension>());
  18. return apiInfo;
  19. }
  20. }

 (3)在主启动类中开启swagger注解

(4)访问

第一种: http://localhost:8081/swagger-ui.html

第二种: http://localhost:8081/doc.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/987952
推荐阅读
相关标签
  

闽ICP备14008679号