一、什么是springboot
提到springboot,首先就需要向大家介绍Spring框架。
Spring框架是一个广泛使用的开源Java平台,它提供了全面的基础设施支持,用于开发各种Java应用程序。Spring框架具有以下优势:
-
方便解耦,简化开发:Spring的控制反转(IoC)容器允许开发者将对象的创建和依赖关系管理交给框架,从而减少代码中的硬编码和提高模块间的解耦。
-
AOP编程的支持:Spring的面向切面编程(AOP)支持使得开发者能够将横切关注点(如日志记录、事务管理等)与业务逻辑分离,提高了代码的模块化和可维护性。
-
声明式事务的支持:Spring提供了声明式事务管理,允许开发者通过注解或配置文件来管理事务,而不是编写复杂的事务代码,这简化了事务管理并减少了出错的可能性。
-
方便程序的测试:Spring支持非侵入式测试,使得单元测试和集成测试更加容易和高效。例如,Spring对JUnit的支持使得编写和执行测试变得更加方便。
-
方便集成各种优秀框架:Spring能够与许多其他框架(如Struts、MyBatis、Hessian、Quartz等)集成,提供了对这些框架的直接支持,简化了它们的使用。
-
降低Java EE API的使用难度:Spring对Java EE API(如JDBC、JavaMail、远程调用等)提供了简化的封装,使得这些API的使用更加直观和容易。
-
Java 源码是经典学习范例:Spring的源码是Java设计模式和最佳实践的典范,学习和研究Spring的源码可以帮助开发者提高自己的技术水平。
接着,让我们来看看SpringBoot,
Spring Boot是一个基于Spring框架的开源项目,它的核心目标是简化Spring应用程序的创建、配置和部署流程。以下是Spring Boot的一些关键特性和优势:
-
快速开发:Spring Boot通过自动配置和约定大于配置的原则,帮助开发者快速搭建可以“运行”的Spring基础架构项目。
-
简化配置:采用“约定优于配置”的理念,自动配置项目所需的常用配置,减少了手动配置的工作量。
-
独立性:可以创建独立的、生产级别的基于Spring的应用,无需额外的服务器支持。
-
内置服务器:内嵌了Tomcat、Jetty或Undertow等Web服务器,无需单独安装和配置这些服务器,简化了开发、测试和部署过程。
-
自动配置:Spring Boot会根据项目中的依赖自动配置相应的组件,如数据库支持、安全性、日志记录和监控等。
-
微服务支持:与Spring Cloud集成,支持微服务架构的开发、部署和管理。
-
安全性:提供了对安全性的全面支持,包括OAuth2、用户认证和授权等。
-
测试支持:提供了对单元测试和集成测试的出色支持,确保代码的质量和稳定性。
-
文档和社区资源:拥有详尽的官方文档和丰富的社区资源,为开发者提供了大量的学习材料和解决方案。
-
云原生支持:提供了与云原生相关的功能,如容器化部署、服务网格集成等。
-
集成数据库操作:与Spring Data JPA等数据库操作框架的集成,简化了数据库操作。
-
国际化支持:提供了国际化支持,允许开发者根据用户的语言和地区设置来展示不同的内容。
-
异步和消息驱动:支持异步处理和消息驱动的特性,使得应用能够处理大量并发请求和复杂业务流程。
-
代码生成工具:提供了Spring Initializr这样的代码生成工具,简化了项目的初始化过程。
-
可配置性:提供了灵活的配置方式,允许开发者根据需要进行自定义配置。
-
与第三方库的集成:提供了与许多第三方库的集成支持,如Redis、MongoDB等。
-
热部署和热替换:支持热部署和热替换功能,提高了开发效率。
-
模块化设计:采用了模块化设计,使得开发者可以根据需求选择性地添加或移除模块。
-
扩展性和可维护性:通过清晰的分层架构和模块化设计,使得应用具有良好的扩展性和可维护性。
Spring Boot通过这些特性,提供了一种更快速、更高效的方式来构建Spring应用程序,无论是小型应用还是复杂的企业级应用,都能为开发者提供便利和效率。
简而言之就是高效易操作。
二、实践
为了体会到Spring Boot的便捷,以下是一个简单的实践。利用JAVA编写的,实现基础的入门。
新建maven工程(以maven的形式新建SpringBoot项目),选择骨架,点击webapps,单击next,根据需要一路点击下去。
接着,
- 引入依赖:在
pom.xml
文件中,首先引入Spring Boot的父项目依赖,这有助于管理项目中的版本冲突。接着,添加Web支持的依赖,以便可以构建Web应用程序。
<!-- 继承Spring Boot的父项目 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
</parent>
<!-- 引入Web支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 配置应用:在
src/main/resources
目录下创建一个application.yml
配置文件。在这个文件中,我们可以指定应用程序的上下文路径,这样就可以自定义访问自己的Spring Boot应用的基本URL。
server:
servlet:
context-path: /springboot
- 创建入口类:开发Spring Boot的全局入口类,这个类是所有其他包的父包。在这个类中,我们将使用
@SpringBootApplication
注解来自动生成必要的配置,并使用@RestController
定义RESTful端点。
package cn.ppdxzz;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class Application {
public static void main(String[] args) {
// 启动Spring Boot应用
SpringApplication.run(Application.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "SpringBoot") String name) {
return String.format("Hello %s!", name);
}
}
-
启动应用程序:运行应用程序,通常是通过在IDE中点击运行按钮或者在命令行中使用
mvn spring-boot:run
命令。 -
访问应用:在浏览器中输入
http://localhost:8080/springboot/hello
,会看到输出的信息 "Hello SpringBoot!"。
这样,就完成了一个基本的Spring Boot应用程序的创建和运行。
三、SpringBoot与其他技术的整合
与Mybatis的整合
1. 添加Mybatis的起步依赖
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
2. 添加数据库驱动坐标
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
3. 添加数据库的连接信息(在resources下的application.properties添加内容):
# 数据库的连接信息
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=nrblwbb7
4. 创建数据库和表结构:
CREATE DATABASE test;
USER test;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) DEFAULT NULL,
`password` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三');
INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
SELECT * FROM USER;
5. 创建实体类
public class User {
// 主键
private Long id;
// 用户名
private String username;
// 密码
private String password;
// 姓名
private String name;
//此处省略getter和setter方法 .. ..
}
6. 创建mapper接口
public interface UserMapper {
List<User> queryUserList();
}
7. 创建映射配置文件(在resources下新建mapper文件夹,在下面创建UserMapper.xml)
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.wzlove.mapper.UserMapper">
<select id="queryUserList" resultType="user">
select * from user
</select>
</mapper>
8. 配置文件配置mybatis的信息:
#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=cn.wzlove.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
9. 写个Controller进行代码测试
@RestController
public class Controller {
@Autowired
private UserMapper userMapper;
@RequestMapping("mybatis")
public String testMyBatis(){
List<User> users = userMapper.queryUserList();
System.out.println(users);
return "success";
}
}
与Redis的整合
1. 配置redis的起步依赖:
<!-- 配置使用redis启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 配置redis的连接信息(本地需要安装有Redis)
#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
3. 编写测试类:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootSpringdatajpaApplication.class)
public class RedisTest {
// 转化成json各执字符串
@Autowired
private RedisTemplate<String,String> redisTemplate;
@Autowired
private UserRepository userRepository;
@Test
public void testRedis() throws JsonProcessingException {
// 1. 从redis中获取数据,习惯json字符串
String userListJson = redisTemplate.boundValueOps("user.findAll").get();
// 2. 判断redis是否存在数据
if(null == userListJson){
// 3. 如果不存在数据,从数据库查询
List<User> all = userRepository.findAll();
// 将查询出的数据存储到缓存中
// 先将集合转换成json格式的字符串, 使用jackson进行转换
ObjectMapper objectMapper = new ObjectMapper();
userListJson = objectMapper.writeValueAsString(all);
redisTemplate.boundValueOps("user.findAll").set(userListJson);
System.out.println("=============从数据库中查询=============");
} else{
System.out.println("从缓存中查询");
}
// 4. 如果存在,将结果返回(测试直接打印就好)
System.out.println(userListJson);
}
}
标签:springboot,spring,配置,boot,开发者,Boot,Spring,入门
From: https://blog.csdn.net/HUOXINGRENhhh/article/details/142459732