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>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.19</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.8</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.2</version>
</dependency>
</dependencies>spring.xml
<context:component-scan base-package="com.baizhi.service"/>
<beanid="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>
<beanid="sqlSessionFactory">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:com.baizhi.mapper/*.xml"/>
<property name="typeAliasesPackage" value="com.baizhi.entity"/>
</bean>
<bean >
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.baizhi.dao"/>
</bean>
<bean id="transactionManager" >
<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) {
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>this.empDAO = empDAO;
}
@Override
public void save(Emp emp) {
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>empDAO.save(emp);
}
@Override
public List<Emp> findAll() {
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>return empDAO.findAll();
}
}一步一步来,先测试Spring+Mybatis:
public class TestEmpServiceImpl {
public static void main(String[] args) {
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>//1.运行工厂
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>//2.工厂中获取对象
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>EmpService empService = (EmpService) context.getBean("empServiceImpl");
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>empService.save(new Emp(null, "小米", new Date(), 44.564));
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>//3.调用方法
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>empService.findAll().forEach(emp -> System.out.println(emp));
}
}可以正常执行,进入下一步mvc的整合,springmvc.xml
<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springmvc</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>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>控制器
@RestController //代表类中返回值转为json响应到浏览器public class EmpController { private final EmpService empService; @Autowired public EmpController(EmpService empService) {<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>this.empService = empService; } //保存 @RequestMapping("save") public void save(Emp emp) {<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>empService.save(emp); } //查询所有 @RequestMapping("findAll") public List findAll() {<context:component-scan base-package="com.baizhi.controller"/>
<mvc:annotation-driven/>
<bean >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>return empService.findAll(); }}测试结果,可以正常添加和查询所有
https://img2023.cnblogs.com/blog/3321544/202312/3321544-20231206230944009-1967251910.png
现有SSM开发存在问题
[*]配置繁琐:SSM框架需要进行大量的配置,包括XML配置文件、注解配置、依赖注入等。这些配置可能会变得繁琐,以及maven配置的冗余代码。
[*]版本兼容性:maven引入的库,他们的版本必须一致,否则产生版本不兼容的问题
第二章、Spring Boot的引言
https://img2023.cnblogs.com/blog/3321544/202312/3321544-20231206230952874-1573997017.png
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的约定
https://img2023.cnblogs.com/blog/3321544/202312/3321544-20231206231001944-1167402008.png
[*]SpringBoot遵循“约定优于配置”的原则,提供了一些默认的约定必须遵守,以简化项目的配置和开发流程:
[*]入口类:Spring Boot 项目必须设置入口类,通常位于项目的根目录下,命名为 Application 或 Main,并且使用 @SpringBootApplication 注解进行标记。
[*]配置文件:Spring Boot 必须在项目根目录存在一个名为application.properties或application.yml的配置文件。这些配置文件通常位于 src/main/resources 目录下。
[*]项目结构:Spring Boot 项目通常采用标准的 Maven 或 Gradle 项目结构,主要包括 src 目录、main 目录和 test 目录。主要的 Java 代码文件通常位于 src/main/java 目录下,资源文件位于 src/main/resources 目录下。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]