SpringBoot

1.什么是Springboot

springboot可以帮你简化spring的搭建,并且快速创建一个spring的应用程序。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置,里面有简化版的ssm框架

2.Springboot特点

(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。

创建一个包,测试controller 类

这里的包要跟Spring'bootApplication在同一等级下,这样包扫描才会读取到这个包,这是spring boot的特性

3.springboot的配置文件

文件的的名字开头必须是application

配置文件中写自己的开发环境代码,公共的代码放在application.properties文件中

要使用其他的配置文件中的代码,要在application.properties中声明spring.profiles.active=test 这里的test是配置文件中的application-后面的名字

,可以在任意配置文件中修改端口号 server.port=2020

4.在配置文件中为为类中的属性赋值

  在配置文件中都可以为类中的属性赋值,application.properties的优先级更高

在application.properties文件中赋

4.1使用@ConfigurationProperties(prefix = "student")为类赋值

stu.name=aa
stu.age=20
stu.arr[0]=kk
stu.arr[1]=ll
stu.map.name=ll
stu.map.class=66

这里的stu是实体类的名字 name是属性名

在其他配置文件中为属性赋值
#server:
#  port: 888  //这是设置端口号
stu:
  name: aa-yml
  age: 18
  arr:
    - dd
    - kk
  map:
    class: ll6
    syuu: 120

实体类

@Data
@Component //该类对象的创建和销毁都有spring容器来管理   
@ConfigurationProperties(prefix = "stu")//读取springboot中的配置内容为属性赋值
public class Stu {
    private String name;
    private int age;
    private String[] arr;
    private Map<String,Object> map;
}

对象获取的方式

@Autowired  //spring容器帮你注入该对象

    private Student student;

这样student的属性有默认值

4.2为单个属性赋值Value

5.Springboot注册web三大组件

5.1什么是web的三个组件?

Servlet和Filter以及Linstener监听器。

5.2为什么要注册这三个组件呢?

因为后面springboot有可能要集成第三方框架,而第三方框架的底层可能就依赖于过滤器或者servlet.

如何注册呢?

思考: 早期:<1>Servlet类<2>注册到Tomcat容器web.xml现在:都没有web.xmlssm在web文件中配置servlet ssm中的使用方法

<servlet>
 <servlet-name></servlet-name>
 <servlet-class>Servlet类</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name></servlet-name>
  </url-parterrn>/</url-parterrn>
</servlet-mapping>

​5.3在springboot中配置servlet

创建一个类,在类上写@Configuration 该类为配置类 xml文件

声明整个类是配置类(.xml)

@Bean //xml文件中的<Bean>标签
public ServletRegistrationBean<Servlet> registrationBean(){
    ServletRegistrationBean<Servlet> reg=new ServletRegistrationBean<>();
    reg.setName("config");
    reg.setServlet(new Myservlet());
    reg.addUrlMappings("/cc");
    return reg;
}

new的类是在包中定义的

public class Myservlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("这是serviet============");
    }
}

5.4过滤器,写一个类

写一个类

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);//放行
    }
}

在配置类中写过滤器的配置文件

@Bean
public FilterRegistrationBean<Filter> filterFilterRegistrationBean(){
    FilterRegistrationBean<Filter> filterBean=new FilterRegistrationBean<>();
    filterBean.setName("myfilter");
    filterBean.setFilter(new Myfilter());
    filterBean.addUrlPatterns("/*");//拦截所有
    return filterBean;
}

5.5springboot的包扫描的原理

在application类中

6springboot自动装配原理。

自动装配就是自己生成一些类,不用自己去写。但是在引入jar包的时候,要引入

有starter关键字的jar包 这样会自动装配对应的配置

什么是自动装配?

无需手动加载某些配置,而由Springboot自动加载进来。

譬如: 自己加载DispatcherServlet.

7.springboot整合数据源

(1)引入依赖

 <!--加入数据源的启动依赖: springboot启动时会加载对应的自动装配类。-->

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-jdbc</artifactId>

        </dependency>

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

        </dependency>

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

# 配置数据源

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/time0422?serverTimezone=Asia/Shanghai

spring.datasource.username=root

spring.datasource.password=****

(3)测试

在测试类中

@SpringBootTest(classes = Qy151SpringbootApplication.class)

class Qy151SpringbootApplicationTests {

    @Autowired

    private DataSource dataSource;

    @Test

    public void test01() throws SQLException {

        //验证了springboot可以帮你完成数据源的自动装配功能

        System.out.println(dataSource.getConnection());

    }

}

上面默认这个数据源使用的连接池Hikari。如果不想使用默认的连接池,我们可以引入第三方的连接池。

7.1集成druid数据源

(1)<!--引入数据库连接池druid-->

        <dependency>

            <groupId>com.alibaba</groupId>

            <artifactId>druid-spring-boot-starter</artifactId>

            <version>1.2.8</version>

        </dependency>

(2)配置文件

spring.datasource.druid.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai

spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.druid.username=root

spring.datasource.druid.password=root

#初始化的个数

spring.datasource.druid.initial-size=5

# 最大活跃数

spring.datasource.druid.max-active=10

# 最大等待时间

spring.datasource.druid.max-wait=3000

# 最小的闲置个数

(3)测试

    @Autowired

    private DataSource dataSource;

    @Test

    public void test01() throws SQLException {

        //验证了springboot可以帮你完成数据源的自动装配功能

        System.out.println(dataSource);

        System.out.println(dataSource.getConnection());

    }

8.springboot整合mybatis

在主类上加入@MapperScan(basePackages = "com.hxc.demo.dao") //为指定的包下的接口生成代理实现类

在dao下创建创建一个类 加上一个注解@Component

(1)

    <!--引入mybatis的启动依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

(2) 修改配置文件

#指定映射文件的路径

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

(3)再主启动类加上注解

@SpringBootApplication
@MapperScan(basePackages = "com.ykq.dao") //为指定的包下的接口生成代理实现类
public class Qy151SpringbootApplication {
​
    public static void main(String[] args) {
        //加载那含有@SpringBootApplication注解的类,它的特殊之处就是该类使用了@SpringBootApplication ,它是一个复合组件。
        //@EnableAutoConfiguration
        SpringApplication.run(Qy151SpringbootApplication.class, args);
    }
​
}

(4)测试

在resources创建一个mapper文件,在创建一个xml文件

 @Autowired

    private DeptMapper deptMapper;

    @Test

    public void test02(){

        System.out.println(deptMapper.findById(1));

    }

9.springboot整合PageHelper分页插件

(1)引入依赖

 <!--pageHelper的启动依赖 自动装配拦截器-->

        <dependency>

            <groupId>com.github.pagehelper</groupId>

            <artifactId>pagehelper-spring-boot-starter</artifactId>

            <version>1.4.2</version>

        </dependency>

(2)测试:

  @Test

    public void test03(){

         PageHelper.startPage(1, 3);

        List<Dept> list = deptMapper.findAll();

        PageInfo<Dept> pageInfo=new PageInfo<>(list);

        System.out.println("当前页码:"+pageInfo.getPageNum());

        System.out.println("当前总页码:"+pageInfo.getPages());

        System.out.println("总条数:"+pageInfo.getTotal());

        System.out.println("当前页码的记录:"+pageInfo.getList());

    }

10.springboot整合swagger2.

(1)引入依赖

       <dependency>

            <groupId>com.spring4all</groupId>

            <artifactId>swagger-spring-boot-starter</artifactId>

            <version>1.9.1.RELEASE</version>

        </dependency>

        <dependency>

            <groupId>com.github.xiaoymin</groupId>

            <artifactId>swagger-bootstrap-ui</artifactId>

            <version>1.7.8</version>

        </dependency>

(2)创建swagger配置类

在类上使用@Configuration注解

Contact是Swagger自动装配类,里面写个人信息

Apilnfo是Swagger的装配类

ApiInfo(文档名,文档介绍,文档的版本,小组的地址,公司名,公司网址)

(3)开启swagger注解

(4)使用swagger注解

使用这些注解要在主类上开启注解

这是写接口类上的注解

@Api  接口类的注解---接口类上 tags属性

@ApiOperation  接口方法的注解---接口方法上 value:

@ApiImplicitParams( 接口参数的说明

    {

      ApiImplicitParam() //单个参数的说明

    }

)

这是写在CommonResult上的注解

@ApiModel---- 实体类接口注解(对类的解释)

@ApiModelProperty---->实体类属性的说明(对类中属性解释)

http://localhost:8081/doc.html

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值