SpringBoot-入门,SSM整合步骤回顾,Spring历史发展,SpringBoot具体内容,SpringBoot热部署,修改banner

SpringBoot-入门

ssm整合的步骤回顾

1. 引入jar包

(spring-context spring-webmvc mybatis spring-jdbc mybatis-spring mysql驱动,druid连接池,lombok工具,jackson,servlet,)

2. 编写xml

2.1 web.xml

前端控制器(dispatcherservlet)

    <!--  配置spring官网提供的前端控制器-->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!--    拦截所有以.do结尾的请求-->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

容器的监听器(初始化spring容器)

    <!--  配置spring官网提供的监听器-->
    <context-param>
        <!--web项目的全局配置-->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

字符编码过滤器

    <!-- 设置字符编码,将所有的字符编码同意设置为utf-8 -->
    <filter>
        <filter-name>filterEncoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>filterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
2.2 applicationcontext.xml

指定扫描的包(排除controller)

    <!--包扫描-->
    <context:component-scan base-package="com.aaa.service,com.aaa.aspect,com.aaa.utils"/>

数据源bean的配置

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

myabtis相关bean的配置

    <!-- mybatis的配置-->
    <!--配置mybatis的sqlsessionfactory-->
    <bean id="sqlsessionfactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!--mapperLocations 指定mybatis映射文件所在的路径        -->
<!--        <property name="mapperLocations" value="classpath:/com/aaa/dao/*/*.xml"></property>-->
        <!--引入分页插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor"/>
            </array>
        </property>
    </bean>
    <!--    将mybatis的接口生成代理对象-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--dao接口所在的包名-->
        <property name="basePackage" value="com.aaa.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlsessionfactory"/>
    </bean>

其他配置

    <!--引入配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties,classpath:oss.properties"/>

    <!--开启aop自动代理-->
    <aop:aspectj-autoproxy />
    
    <!--阿里云oss配置-->
    <bean id="ossEntity" class="com.aaa.entity.OssEntity">
        <property name="accessKeyId" value="${oss.accessKeyId}"/>
        <property name="accessKeySecret" value="${oss.accessKeySecret}"/>
        <property name="bucketName" value="${oss.bucketName}"/>
        <property name="endpoint" value="${oss.endpoint}"/>
    </bean>
2.3 springmvc.xml
  • springmvc的注解驱动
  • 开启注解扫描
  • 指定扫描包(controller)
  • 视图(view)解析器(前缀,后缀)
  • 配置拦截器
    <!--springmvc的注解驱动-->
    <mvc:annotation-driven/>
    <!--开启注解扫描-->
    <context:component-scan base-package="com.aaa.controller"/>

    <!--配置二维码加载访问的IP地址和端口号-->
    <bean id="loginController" class="com.aaa.controller.LoginController">
        <property name="ip" value="47.104.143.50"/>
        <property name="port" value="80"/>
    </bean>

    <!--视图解析器的配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/views/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="-1"/>
    </bean>
    <!--配置拦截器-->
    <bean id="loginInterceptor" class="com.aaa.controller.interceptor.LoginInterceptor"/>
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" />
            <ref bean="loginInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

3. java代码

  • controller层
    @controller @requestmapping @responseBody
  • service层
    @service
  • dao层 @repository(可以省略)
  • @autowire @resource

SpringBoot

SpringtBoot其实就是Spring升级版

  • Spring项目:大量的配置
  • SpringBoot——尽量减少配置

1. 回忆spring的历史发展进程

Spring:

第一阶段:xml配置——所有配置都是xml,包括自己的类 系统的也用Bean
第二阶段:注解——自己的类用注解,系统的用Bean
第三阶段:Spring4.0之后,不要配置文件配置写到类里边——配置类。@Configuration
零配置----而是配置文件不要了,放入到配置类中

SpringBoot: 第三阶段升级

系统本身自己书写了大量的配置类,常用的配置都有,加载他的启动项即可。
——也可以书写自己的配置类 以后启动:一般不用外置tomcat,内置。
Springboot推荐的包——jar包 Springboot的启动最新版本:可以直接用java -jar运行

2. 具体内容

2.1 springboot概念

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置
用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。
虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。

第一阶段:xml配置

在Spring1.x时代,使用Spring开发满眼都是xml配置的Bean,随着项目的扩大,我们需要把xml配置文件放到不同的配置文件里,那时需要频繁的在开发的类和配置文件之间进行切换

第二阶段:注解配置

在Spring 2.5时代,随着JDK1.5带来的注解支持,Spring提供了声明Bean的注解(例如@Component、@Service),大大减少了配置量。主要使用的方式是应用的基本配置(如数据库配置)用xml,业务配置用注解

第三阶段:java配置

Spring 4.0 引入了基于 Java 的配置能力,这是一种类型安全的可重构配置方式,可以代替XML。我们目前刚好处于这个时代,Spring4.x和Spring Boot都推荐使用Java配置。

2.2 springboot特征
  1. 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;——最新版本推荐的jar包:内置了一个tomcat
  2. 内嵌Tomcat或Jetty等Servlet容器;——springboot将tomcat集成——main方法来启动工程
  3. 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
    stater是一个集成好的组件,提供相关的集成工程
  4. 尽可能自动配置Spring容器;
  5. 提供准备好的特性,如指标、健康检查和外部化配置;
  6. 绝对没有代码生成,不需要XML配置。——java配置,configration的配置类
2.3 关于springboot两个策略

SpringBoot框架中还有两个非常重要的策略:开箱即用约定优于配置

  • 开箱即用: Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。
  • 约定优于配置: Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
2.4 springboot项目基础架构说明

前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到Bootstrap、AngularJS、JQuery等;

在浏览器的数据传输格式上采用Json,非xml,
同时提供RESTfulAPI;

SpringMVC框架用于数据到达服务器后处理请求;
到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架;
数据库常用MySQL;
开发工具推荐IntelliJIDEA

2.5 构建SpringBoot项目
  1. 新建项目选择 Spring Initializer
    在这里插入图片描述
    下面根据自己需要引用的依赖,勾选相关的框框就行

推荐使用druid数据源
如果需要降低MySQL的版本,可以重新指定,如果本身就是MySQL8.0不需要写

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>
        <!--<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            &lt;!&ndash;降低mysql的版本号&ndash;&gt;
            <version>5.1.47</version>
            <scope>runtime</scope>
        </dependency>-->

配置相关参数application.yml

spring:
  datasource:
    #druid数据源
    druid:
      url: jdbc:mysql://localhost:3306/emp1?useUnicode=true&characterEncoding=utf-8&useSSL=false
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: 1234

mybatis:
  #指定mybatis映射文件所在的路径
  mapper-locations: classpath:mapper/*.xml
  #给com.aaa.entity所有实体类起别名,默认是类名
  type-aliases-package: com.aaa.entity

扫描dao接口

package com.aaa;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.aaa.dao")
public class MyspringbootApplication {

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

}

templates里边一般放的是动态生成的东西。默认是不能直接访问的
A:直接将templates开放了

spring:
  web:
    resources:
      static-locations: classpath:/templates,classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources

B:去后台绕了一圈:转发回来

    @RequestMapping("/toBBB")
    public String toBBB() {
        //前缀后缀会默认添加templates/  .html
        return "bbb";
    }

yml中会默认添加

spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html

spring boot 热部署

引入jar包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

设置中勾选下图中所示
在这里插入图片描述
最后一步根据idea的版本不同,不同的设置
idea2021.2之前
idea中快捷键

ctrl+shift+alt+/

在这里插入图片描述

新版本idea:
在这里插入图片描述
热部署完成

修改banner

在resources目录下创建banner.txt文件

------------------------------------------------------------------------------------------------------------------------
.__           .__  .__                     __            .___             __           .__
|  |__   ____ |  | |  |   ____     _______/  |_ __ __  __| _/____   _____/  |_    _____|  |__ _____    ____    ____  
|  |  \_/ __ \|  | |  |  /  _ \   /  ___/\   __\  |  \/ __ |/ __ \ /    \   __\  /  ___/  |  \\__  \  /    \  / ___\ 
|   Y  \  ___/|  |_|  |_(  <_> )  \___ \  |  | |  |  / /_/ \  ___/|   |  \  |    \___ \|   Y  \/ __ \|   |  \/ /_/  >
|___|  /\___  >____/____/\____/  /____  > |__| |____/\____ |\___  >___|  /__|   /____  >___|  (____  /___|  /\___  / 
     \/     \/                        \/                  \/    \/     \/            \/     \/     \/     \//_____/
------------------------------------------------------------------------------------------------------------------------

banner生成网址:
https://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打乒乓球只会抽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值