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

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

学习视频:【编程不良人】2021年SpringBoot最新最全教程
第一章、传统SSM开发回顾以及问题

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


  • 项目
    需求分析 —>概要设计 —>(库表设计) —> 详细设计 —>(验证库表正确性) —> 编码(环境搭建+业务代码)—>测试 —>部署上线
    这是一般整个项目的开发步骤,但是我们选择简单项目实现
  • 功能:员工添加、查询所有
    选择mysql数据库,库:ssm,表:emp,字段:id name birthday salary
  • 编码
    sql建库建表
    1. create DATABASE ssm;
    2. use ssm;
    3. create TABLE emp(
    4. id int(11) auto_increment PRIMARY KEY,
    5. name VARCHAR(40),
    6. birthday TIMESTAMP,
    7. salary DOUBLE
    8. )
    复制代码
    环境搭建  引入依赖
    1. <dependencies>
    2.   <dependency>
    3.     <groupId>junit</groupId>
    4.     <artifactId>junit</artifactId>
    5.     <version>4.11</version>
    6.     <scope>test</scope>
    7.   </dependency>
    8.   
    9.   <dependency>
    10.     <groupId>org.springframework</groupId>
    11.     <artifactId>spring-context</artifactId>
    12.     <version>5.3.6</version>
    13.   </dependency>
    14.   <dependency>
    15.     <groupId>org.springframework</groupId>
    16.     <artifactId>spring-context-support</artifactId>
    17.     <version>5.3.6</version>
    18.   </dependency>
    19.   <dependency>
    20.     <groupId>org.springframework</groupId>
    21.     <artifactId>spring-aop</artifactId>
    22.     <version>5.3.6</version>
    23.   </dependency>
    24.   <dependency>
    25.     <groupId>org.springframework</groupId>
    26.     <artifactId>spring-jdbc</artifactId>
    27.     <version>5.3.6</version>
    28.   </dependency>
    29.   <dependency>
    30.     <groupId>org.springframework</groupId>
    31.     <artifactId>spring-core</artifactId>
    32.     <version>5.3.6</version>
    33.   </dependency>
    34.   <dependency>
    35.     <groupId>org.springframework</groupId>
    36.     <artifactId>spring-web</artifactId>
    37.     <version>5.3.6</version>
    38.   </dependency>
    39.   
    40.   <dependency>
    41.     <groupId>org.springframework</groupId>
    42.     <artifactId>spring-webmvc</artifactId>
    43.     <version>5.3.6</version>
    44.   </dependency>
    45.   
    46.   <dependency>
    47.     <groupId>org.mybatis</groupId>
    48.     <artifactId>mybatis</artifactId>
    49.     <version>3.5.9</version>
    50.   </dependency>
    51.   <dependency>
    52.     <groupId>org.mybatis</groupId>
    53.     <artifactId>mybatis-spring</artifactId>
    54.     <version>3.0.0</version>
    55.   </dependency>
    56.   
    57.   <dependency>
    58.     <groupId>mysql</groupId>
    59.     <artifactId>mysql-connector-java</artifactId>
    60.     <version>5.1.47</version>
    61.   </dependency>
    62.   
    63.   <dependency>
    64.     <groupId>com.alibaba</groupId>
    65.     <artifactId>druid</artifactId>
    66.     <version>1.1.19</version>
    67.   </dependency>
    68.   
    69.   <dependency>
    70.     <groupId>org.aspectj</groupId>
    71.     <artifactId>aspectjrt</artifactId>
    72.     <version>1.8.8</version>
    73.   </dependency>
    74.   <dependency>
    75.     <groupId>org.aspectj</groupId>
    76.     <artifactId>aspectjweaver</artifactId>
    77.     <version>1.8.3</version>
    78.   </dependency>
    79.   
    80.   <dependency>
    81.     <groupId>com.fasterxml.jackson.core</groupId>
    82.     <artifactId>jackson-databind</artifactId>
    83.     <version>2.14.2</version>
    84.   </dependency>
    85. </dependencies>
    复制代码
    spring.xml
    1. <context:component-scan base-package="com.baizhi.service"/>
    2. <bean  id="dataSource">
    3.     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    4.     <property name="url" value="jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8"/>
    5.     <property name="username" value="root"/>
    6.     <property name="password" value="123456"/>
    7. </bean>
    8. <bean  id="sqlSessionFactory">
    9.     <property name="dataSource" ref="dataSource"/>
    10.     <property name="mapperLocations" value="classpath:com.baizhi.mapper/*.xml"/>
    11.     <property name="typeAliasesPackage" value="com.baizhi.entity"/>
    12. </bean>
    13. <bean >
    14.     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    15.     <property name="basePackage" value="com.baizhi.dao"/>
    16. </bean>
    17. <bean id="transactionManager" >
    18.     <property name="dataSource" ref="dataSource"/>
    19. </bean>
    20. <tx:annotation-driven/>
    复制代码
    Mapper配置文件
    1. <insert id="save" parameterType="Emp" useGeneratedKeys="true" keyProperty="id">
    2.     INSERT into emp values(#{id},#{name},#{birthday},#{salary})
    3. </insert>
    4. <select id="findAll" resultType="com.baizhi.entity.Emp">
    5.     select id,name,birthday,salary from emp
    6. </select>
    复制代码
    1. @Service
    2. @Transactional
    3.         public class EmpServiceImpl implements EmpService {
    4.     private final EmpDAO empDAO;
    5.     @Autowired
    6.     public EmpServiceImpl(EmpDAO empDAO) {
    7. <context:component-scan base-package="com.baizhi.controller"/>
    8. <mvc:annotation-driven/>
    9. <bean >
    10.     <property name="prefix" value="/"/>
    11.     <property name="suffix" value=".jsp"/>
    12. </bean>this.empDAO = empDAO;
    13.     }
    14.     @Override
    15.     public void save(Emp emp) {
    16. <context:component-scan base-package="com.baizhi.controller"/>
    17. <mvc:annotation-driven/>
    18. <bean >
    19.     <property name="prefix" value="/"/>
    20.     <property name="suffix" value=".jsp"/>
    21. </bean>empDAO.save(emp);
    22.     }
    23.     @Override
    24.     public List<Emp> findAll() {
    25. <context:component-scan base-package="com.baizhi.controller"/>
    26. <mvc:annotation-driven/>
    27. <bean >
    28.     <property name="prefix" value="/"/>
    29.     <property name="suffix" value=".jsp"/>
    30. </bean>return empDAO.findAll();
    31.     }
    32. }
    复制代码
    一步一步来,先测试Spring+Mybatis:
    1. public class TestEmpServiceImpl {
    2.     public static void main(String[] args) {
    3. <context:component-scan base-package="com.baizhi.controller"/>
    4. <mvc:annotation-driven/>
    5. <bean >
    6.     <property name="prefix" value="/"/>
    7.     <property name="suffix" value=".jsp"/>
    8. </bean>//1.运行工厂
    9. <context:component-scan base-package="com.baizhi.controller"/>
    10. <mvc:annotation-driven/>
    11. <bean >
    12.     <property name="prefix" value="/"/>
    13.     <property name="suffix" value=".jsp"/>
    14. </bean>ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
    15. <context:component-scan base-package="com.baizhi.controller"/>
    16. <mvc:annotation-driven/>
    17. <bean >
    18.     <property name="prefix" value="/"/>
    19.     <property name="suffix" value=".jsp"/>
    20. </bean>//2.工厂中获取对象
    21. <context:component-scan base-package="com.baizhi.controller"/>
    22. <mvc:annotation-driven/>
    23. <bean >
    24.     <property name="prefix" value="/"/>
    25.     <property name="suffix" value=".jsp"/>
    26. </bean>EmpService empService = (EmpService) context.getBean("empServiceImpl");
    27. <context:component-scan base-package="com.baizhi.controller"/>
    28. <mvc:annotation-driven/>
    29. <bean >
    30.     <property name="prefix" value="/"/>
    31.     <property name="suffix" value=".jsp"/>
    32. </bean>empService.save(new Emp(null, "小米", new Date(), 44.564));
    33. <context:component-scan base-package="com.baizhi.controller"/>
    34. <mvc:annotation-driven/>
    35. <bean >
    36.     <property name="prefix" value="/"/>
    37.     <property name="suffix" value=".jsp"/>
    38. </bean>//3.调用方法
    39. <context:component-scan base-package="com.baizhi.controller"/>
    40. <mvc:annotation-driven/>
    41. <bean >
    42.     <property name="prefix" value="/"/>
    43.     <property name="suffix" value=".jsp"/>
    44. </bean>empService.findAll().forEach(emp -> System.out.println(emp));
    45.     }
    46. }
    复制代码
    可以正常执行,进入下一步mvc的整合,springmvc.xml
    1. <context:component-scan base-package="com.baizhi.controller"/>
    2. <mvc:annotation-driven/>
    3. <bean >
    4.     <property name="prefix" value="/"/>
    5.     <property name="suffix" value=".jsp"/>
    6. </bean>
    复制代码
    web.xml
    1. <context-param>
    2.   <param-name>contextConfigLocation</param-name>
    3.   <param-value>classpath:spring.xml</param-value>
    4. </context-param>
    5. <listener>
    6.   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    7. </listener>
    8. <servlet>
    9.   <servlet-name>springmvc</servlet-name>
    10.   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    11.   <init-param>
    12.     <param-name>contextConfigLocation</param-name>
    13.     <param-value>classpath:springmvc.xml</param-value>
    14.   </init-param>
    15. </servlet>
    16. <servlet-mapping>
    17.   <servlet-name>springmvc</servlet-name>
    18.   <url-pattern>/</url-pattern>
    19. </servlet-mapping>
    复制代码
    控制器
    1. @RestController //代表类中返回值转为json响应到浏览器public class EmpController {    private final EmpService empService;    @Autowired    public EmpController(EmpService empService) {<context:component-scan base-package="com.baizhi.controller"/>
    2. <mvc:annotation-driven/>
    3. <bean >
    4.     <property name="prefix" value="/"/>
    5.     <property name="suffix" value=".jsp"/>
    6. </bean>this.empService = empService;    }    //保存    @RequestMapping("save")    public void save(Emp emp) {<context:component-scan base-package="com.baizhi.controller"/>
    7. <mvc:annotation-driven/>
    8. <bean >
    9.     <property name="prefix" value="/"/>
    10.     <property name="suffix" value=".jsp"/>
    11. </bean>empService.save(emp);    }    //查询所有    @RequestMapping("findAll")    public List findAll() {<context:component-scan base-package="com.baizhi.controller"/>
    12. <mvc:annotation-driven/>
    13. <bean >
    14.     <property name="prefix" value="/"/>
    15.     <property name="suffix" value=".jsp"/>
    16. </bean>return empService.findAll();    }}
    复制代码
    测试结果,可以正常添加和查询所有

现有SSM开发存在问题


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


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的优势


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



  • SpringBoot遵循“约定优于配置”的原则,提供了一些默认的约定必须遵守,以简化项目的配置和开发流程:

    • 入口类:Spring Boot 项目必须设置入口类,通常位于项目的根目录下,命名为 Application 或 Main,并且使用 @SpringBootApplication 注解进行标记。
    • 配置文件:Spring Boot 必须在项目根目录存在一个名为application.propertiesapplication.yml的配置文件。这些配置文件通常位于 src/main/resources 目录下。
    • 项目结构:Spring Boot 项目通常采用标准的 Maven 或 Gradle 项目结构,主要包括 src 目录、main 目录和 test 目录。主要的 Java 代码文件通常位于 src/main/java 目录下,资源文件位于 src/main/resources 目录下。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表