Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发

学习视频:【编程不良人】2021年SpringBoot最新最全教程

第一章、传统SSM开发回顾以及问题

Spring + SpringMVC + Mybatis SSM 实现一个简单功能 员工添加、查询…

SSM项目简单实现

  • 项目

    需求分析 —>概要设计 —>(库表设计) —> 详细设计 —>(验证库表正确性) —> 编码(环境搭建+业务代码)—>测试 —>部署上线

    这是一般整个项目的开发步骤,但是我们选择简单项目实现

  • 功能:员工添加、查询所有

    选择mysql数据库,库:ssm,表:emp,字段:id name birthday salary

  • 编码

    sql建库建表

    create DATABASE ssm;
    use ssm;
    create TABLE emp(
    id int(11) auto_increment PRIMARY KEY,
    name VARCHAR(40),
    birthday TIMESTAMP,
    salary DOUBLE
    )
    

    环境搭建 引入依赖

    <dependencies>
      <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.11version>
        <scope>testscope>
      dependency>
    
      
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>5.3.6version>
      dependency>
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-context-supportartifactId>
        <version>5.3.6version>
      dependency>
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-aopartifactId>
        <version>5.3.6version>
      dependency>
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jdbcartifactId>
        <version>5.3.6version>
      dependency>
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-coreartifactId>
        <version>5.3.6version>
      dependency>
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webartifactId>
        <version>5.3.6version>
      dependency>
      
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>5.3.6version>
      dependency>
      
      <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatisartifactId>
        <version>3.5.9version>
      dependency>
      <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatis-springartifactId>
        <version>3.0.0version>
      dependency>
      
      <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <version>5.1.47version>
      dependency>
      
      <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druidartifactId>
        <version>1.1.19version>
      dependency>
      
      <dependency>
        <groupId>org.aspectjgroupId>
        <artifactId>aspectjrtartifactId>
        <version>1.8.8version>
      dependency>
      <dependency>
        <groupId>org.aspectjgroupId>
        <artifactId>aspectjweaverartifactId>
        <version>1.8.3version>
      dependency>
      
      <dependency>
        <groupId>com.fasterxml.jackson.coregroupId>
        <artifactId>jackson-databindartifactId>
        <version>2.14.2version>
      dependency>
    dependencies>
    

    spring.xml

    
    <context:component-scan base-package="com.baizhi.service"/>
    
    <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    bean>
    
    <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:com.baizhi.mapper/*.xml"/>
        <property name="typeAliasesPackage" value="com.baizhi.entity"/>
    bean>
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.baizhi.dao"/>
    bean>
    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    bean>
    
    <tx:annotation-driven/>
    

    Mapper配置文件

    
    <insert id="save" parameterType="Emp" useGeneratedKeys="true" keyProperty="id">
        INSERT into emp values(#{id},#{name},#{birthday},#{salary})
    insert>
    <select id="findAll" resultType="com.baizhi.entity.Emp">
        select id,name,birthday,salary from emp
    select>
    
    @Service
    @Transactional
    	public class EmpServiceImpl implements EmpService {
    
        private final EmpDAO empDAO;
    
        @Autowired
        public EmpServiceImpl(EmpDAO empDAO) {
            this.empDAO = empDAO;
        }
    
        @Override
        public void save(Emp emp) {
            empDAO.save(emp);
        }
    
        @Override
        public List<Emp> findAll() {
            return empDAO.findAll();
        }
    }
    

    一步一步来,先测试Spring+Mybatis:

    public class TestEmpServiceImpl {
        public static void main(String[] args) {
            //1.运行工厂
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
            //2.工厂中获取对象
            EmpService empService = (EmpService) context.getBean("empServiceImpl");
            empService.save(new Emp(null, "小米", new Date(), 44.564));
            //3.调用方法
            empService.findAll().forEach(emp -> System.out.println(emp));
    
        }
    }
    

    可以正常执行,进入下一步mvc的整合,springmvc.xml

    
    <context:component-scan base-package="com.baizhi.controller"/>
    
    <mvc:annotation-driven/>
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    bean>
    

    web.xml

    
    <context-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:spring.xmlparam-value>
    context-param>
    
    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>
    
    
    <servlet>
      <servlet-name>springmvcservlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
      <init-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:springmvc.xmlparam-value>
      init-param>
    servlet>
    <servlet-mapping>
      <servlet-name>springmvcservlet-name>
      <url-pattern>/url-pattern>
    servlet-mapping>
    

    控制器

    @RestController //代表类中返回值转为json响应到浏览器
    public class EmpController {
        private final EmpService empService;
    
        @Autowired
        public EmpController(EmpService empService) {
            this.empService = empService;
        }
    
        //保存
        @RequestMapping("save")
        public void save(Emp emp) {
            empService.save(emp);
        }
    
        //查询所有
        @RequestMapping("findAll")
        public List<Emp> findAll() {
            return empService.findAll();
        }
    }
    

    测试结果,可以正常添加和查询所有

Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发_第1张图片

现有SSM开发存在问题

  1. 配置繁琐:SSM框架需要进行大量的配置,包括XML配置文件、注解配置、依赖注入等。这些配置可能会变得繁琐,以及maven配置的冗余代码。
  2. 版本兼容性:maven引入的库,他们的版本必须一致,否则产生版本不兼容的问题

第二章、Spring Boot的引言

Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发_第2张图片

2.1 Spring Boot是什么

Spring Boot是由Pivotal团队提供的一套开源框架,Spring Boot的目标是让开发者更多地关注业务特性。它通过自动配置来简化开发流程,例如,当检测到Spring MVC在类路径上时,Spring Boot会自动添加必要的bean,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

Spring Boot 作用:简化Spring应用初始搭建和开发过程

如何简化:开发使用SpringBoot只要基于特定方式进行配置,就可以简化Spring使用

SpringBoot 微框架:5分钟完成之前ssm中的项目搭建,大大提高开发效率

SpringBoot (微框架)= SpringMVC(控制器) + Spring core(项目管理)

2.2 Spring Boot的优势

  1. 创建完整独立的Spring应用程序 ,只有一个容器;父子容器间的问题不存在。
  2. 嵌入的Tomcat,无需部署WAR文件 应用跑在内嵌服务器
  3. 简化Maven配置,自动配置Spring,没有XML配置

2.3 Spring Boot的约定

Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发_第3张图片

  • SpringBoot遵循“约定优于配置”的原则,提供了一些默认的约定必须遵守,以简化项目的配置和开发流程:
    1. 入口类:Spring Boot 项目必须设置入口类,通常位于项目的根目录下,命名为 ApplicationMain,并且使用 @SpringBootApplication 注解进行标记。
    2. 配置文件:Spring Boot 必须在项目根目录存在一个名为application.propertiesapplication.yml的配置文件。这些配置文件通常位于 src/main/resources 目录下。
    3. 项目结构:Spring Boot 项目通常采用标准的 Maven 或 Gradle 项目结构,主要包括 src 目录、main 目录和 test 目录。主要的 Java 代码文件通常位于 src/main/java 目录下,资源文件位于 src/main/resources 目录下。

下一章:Spring Boot学习随笔-第一个SpringBoot项目快速启动(org.springframework.boot、@SpringBootApplication、application.yml)

你可能感兴趣的:(Spring,Boot,spring,boot,学习,后端)