SpringBoot需不需要配置tomcat?spring spingMVC springBoot

本文介绍了SpringBoot在项目中的应用,指出其无需额外配置Tomcat,因为已内置。详细讨论了SpringBoot的优势、特点,启动原理,以及如何进行Mybatis、拦截器、验证码、分页、热加载、Swagger、SpringDataJPA、Thymeleaf、邮件发送和支付宝支付的整合。
摘要由CSDN通过智能技术生成

最近接触了springBoot,springMVC,spring,在springBoot项目中了解到,它是不需要配置tomcat的,因为内置是有tomcat的。

1.spring优缺点

优点 缺点
通过ioc,aop管理bean对象,节省了内存空间,更好的编写业务逻辑,解除耦合 1.虽然组件是轻量级,但是配置是重量级的。2.依赖管理问题,spring的依赖需要保持一致,同时需要避免依赖冲突问题

2.SpringBoot的基本原理
(1)SpringBoot的优势

<1>springboot是对spring+springmvc的封装,基本功能并没有增加。将繁琐
的配置,进行自动化的管理,不再需要配置文件。

<2>springboot使用依赖传递的功能,只需要引入父层依赖,其他的依赖的版
本由父层springboot来进行管理,避免了依赖冲突问题。

(2)SpringBoot的特点
<1>提供了快速使用spring的一种方式
<2>提供当前springboot的一些环境,以及内存,以及健康状况
<3>开箱即用,不需要任何配置信息,就可以使用springboot,但是代码层面与spring+springmvc相同

(3)SpringBoot的注意事项
<1>springBoot 是不需要配置tomcat的,因为在springboot的依赖中 spring-boot-starter-web中已经内置了tomcat,帮助我们启动项目。

<2>对于启动类,是我们springboot的一个入口,同时启动类上方需要加入注解@SpringbootApplication 标识当前类为启动类。在springboot工程中,通常只有一个启动类.。

<3>根据springboot的自动装配原理可知,当我们在Pom中引入某个组件,或者框架后,springboot启动时,会装配该框架,组件的环境,我们就需要有该框架/组件的配置信息,如果没有,则会报错,或者说,引入pom依赖后,不想使用则需要在启动类@SpringBootApplication(exclude=配置.class)排除掉该配置类.

<4>通过springboot的启动类启动项目时,默认会加载启动类,同级,或者下级的包的注解。如果启动类在单独的一个包中,则需要配置scanBasePackages 告诉springboot启动时,需要扫描的包路径.

(4)SpringBoot的启动原理
<1>从启动类入手,跟踪启动的流程,大致为:

run->SpringApplication->ConfigurableApplicationContext
->StopWatch 声明监听器->开始监听项目的启动时间
->ConfigurableApplicationContext(配置文件应用容器)
->exceptionReporters (异常记录)
->configureHeadlessProperty(配置属性)
->getRunListeners(项目启动监听器)
->listeners.starting(); 
启动监听->(springBoot启动的准备工作)

启动的核心代码是: refreshContext(context); //刷新容器 -->执行了spring的bean创建逻辑

<2>如何来改变启动的banner图,SpringApplicationBannerPrinter 该类是banner图的基类,如果我们想要改变banner图,可以在resources 资源目录下,创建 banner.txt文件,启动时,会读取该文件的内容,进行打印。

(5)springboot的自动装配原理

<1>当springBoot引入某个组件依赖时,springBoot会在启动时,自动装配该
组件的环境,如,引入了Mybatis
需要操作数据时,会在启动springboot时,创建SqlSessionFactory,如果没有
配置有关数据库的信息,则会报错,无法启动该项目。

<2>springBoot是如何发现你引入了该依赖,并且需要配置环境呢。在
@SpringBootApplication注解中有一个注解@EnableAutoConfiguration(自
动装配配置类)。在@EnableAutoConfiguration中有一个
@Import(AutoConfigurationImportSelector.class)
自动装配选中的组件

<3>在AutoConfigurationImportSelector
中的selectImports方法中,会将springboot默认集成的所有的框架/组件,进
行加载(org.springframework.boot:spring-boot-autoconfiguration中,
META-INF中的spring.factories)在spring.factories
中维护了110个springboot默认集成的框架/组件,在selectImports中会扫描
spring.factories
进行加载,同时根据pom中的引入的依赖信息,判断需要加载哪些基本配置
类,如果默认的只有springboot-starter-web得话,只有24个基本配置类,每
增加一个pom依赖,则加载的配置类会进行对应的添加。

<4>约定大于配置的思想

(6)springboot的配置文件

<1>.properties 在properties中是以key=value来进行配置的

server.
	port=端口号

<2>.yaml 在yaml中是以父子结构来进行配置 中间以:进行分割

server:
	port: 端口号

<3>.yml 与第二种配置的方式一致

server:
	port: 端口号

注意:如果三种配置同时存在,则 properties发生效用, 因为properties最后加
载。会将yaml.yml中的以配置好的信息进行覆盖.

3.SpringBoot整合Mybatis

(1)导入pom依赖

        <!--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>3.0.1</version>
        </dependency>

(2)配置数据源

# 配置数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ycy_test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root
# 配置别名和映射文件路径
mybatis.type-aliases-package=com.ycy.pojo
mybatis.mapper-locations=mapper/*Mapper.xml

(3)编写接口

@Mapper //标识为mybatis的接口 同时交由spring管理
public interface UserMapper {
   
 
    TbUser findByUserName(@Param("userName")String userName);
}

(4)编写测试类

导入pom依赖

        <!--单元测试启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

在test中的java下创建与main的java下的同名以及同级目录,帮助测试类找到springboot的启动类

@RunWith(SpringRunner.class)
@SpringBootTest  //启动测试类时,会找到springboot的启动类,先来加载spring的环境,再来进行测试
public class TestUser {
   
 
    @Autowired
    UserMapper userMapper;
 
    @Test
    public void testUser(){
   
        TbUser admin = userMapper.findByUserName("admin");
        System.out.println(admin);
    }
}

4.SpringBoot整合拦截器
(1)定义拦截类

public class MyInterceptor implements HandlerInterceptor {
   
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
   
        Admin admin = (Admin) request.getSession().getAttribute("admin");
        if(admin!=null){
   
            return true;
        }
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json");
        ResponseData responseData = new ResponseData(1,"用户未登录",null,null);
        String string = JSON.toJSONString(responseData);
        response.getWriter().write(string);
        return false;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
   }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
   }
}

(2)配置

@Configuration
public class MyWebConfig implements WebMvcConfigurer {
   
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
   
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/dept/**").excludePathPatterns("");
    }
}

5.SpringBoot整合验证码插件Captcha

(1)导入依赖

(2)添加配置

(3)添加controller

6.SpringBoot整合分页插件

(1)导入依赖

        <dependency>
            <groupId>com.github.pagehelper</groupId
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值