springboot 基本框架的构建与讲解
1.什么是springboot 2.为什么使用springboot 3.如何创建springboot工程 4.java中如何读取springboot配置文件的内容 5.springboot整合数据源 6.springboot整合mybatis-plus
1.什么是springboot
Spring Boot是一个用于构建Java应用程序的开源框架。它简化了Java应用程序的开发过程,提供了一种快速、便捷的方式来创建独立的、可执行的、生产级别的Spring应用程序。Spring Boot基于Spring框架,通过自动配置和约定优于配置的原则,减少了开发人员的工作量,使得开发过程更加高效。它还提供了许多开箱即用的功能和插件,如内嵌的Web服务器、安全性、数据库访问、缓存等,使得开发人员可以更专注于业务逻辑的实现。总之,Spring Boot是一个强大的框架,可以帮助开发人员快速构建可靠、高效的Java应用程序。
2.为什么使用springboot
使用Spring Boot有以下几个主要的好处:
-
简化配置:Spring Boot采用了约定优于配置的原则,提供了自动配置的能力。它能够根据项目的依赖和环境,自动配置很多常用的功能,如数据库连接、Web服务器、安全性等。这样,开发人员可以专注于业务逻辑的实现,而无需手动配置繁琐的参数。
-
快速启动:Spring Boot内置了一个嵌入式的Web服务器,如Tomcat、Jetty等,可以直接打包为可执行的Jar文件或War文件。这样一来,不仅减少了部署的复杂性,还可以快速启动应用程序,提高开发和测试的效率。
-
微服务架构支持:Spring Boot为构建微服务应用提供了良好的支持。它提供了丰富的功能和插件,如服务注册与发现、负载均衡、断路器等,使得开发者可以更容易地实现和管理微服务架构。
-
生态系统和社区支持:Spring Boot建立在Spring框架的基础上,拥有庞大的生态系统和活跃的开源社区。这意味着开发者可以轻松地找到各种成熟的解决方案、第三方库和文档支持,可以快速解决问题,提高开发效率。
3.如何创建springboot工程
3.1搭建springboot工程
编写controller层代码
@RestController @RequestMapping("/hello") public class MyController { @GetMapping("/world") public Map<String,Object> index(){ Map<String, Object> map = new HashMap<>(); map.put("name","xbb"); map.put("age","22"); return map; } }
3.2springboot中jar包的配置
3.3springboot配置文件的种类
springboot使用两种格式的配置,内容格式不同。
第一种: 后缀名为.properties
第二种: 后缀名为.yml
两种格式文件都可以配置,如果两种配置内容相同,以properties为主。如果不同都能用。
4.读取springboot配置文件的内容
1.在Spring Boot中,可以通过使用@Value
注解
@Value("${student.name}") private String name; @Value("${student.age}") private Integer age; @GetMapping("/nihao") public String test01(){ return "name:"+name+",age:"+age; }
#aplication.properties文件中 student.name=吕小布 student.age=28
2.通过@ConfigruationProperties
@Data @Component //交给容器管理 @ConfigurationProperties(prefix = "teacher") //读取配置文件以teacher开头的配置 public class Teacher { private String name; private Integer age; }
@Autowired private Teacher teacher; @GetMapping("/hello2") public Teacher test02(){ return teacher; }
@Value只能读取基本类型和String 类型,而@ConfigurationProperties可以读取任意类型。
5.springboot整合数据源
5.1设置默认数据源
(1)引入相关依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
(2)aplication.properties配置文件中配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.data-username=root spring.datasource.data-password=123456 spring.datasource.url=jdbc:mysql://localhost:3306/mysql5_1?serverTimezone=Asia/Shanghai
(3)测试
@SpringBootTest class Myjava15springbootApplicationTests { @Autowired private DataSource dataSource;//帮你完成数据源的自动装配 @Autowired private DeptDao deptDao; @Test void contextLoads() { System.out.println(dataSource); } }
5.2设置druid 数据源
(1)引入依赖
<!--druid数据源的依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.1</version> </dependency>
(2)修改配置文件
#德鲁伊 druid spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.username=root spring.datasource.druid.password=123456 spring.datasource.druid.url=jdbc:mysql://localhost:3306/mysql5_1?serverTimezone=Asia/Shanghai
(3)测试,(测试的时候把默认数据源的配置文件给先注释掉)
@SpringBootTest class Myjava15springbootApplicationTests { @Autowired private DataSource dataSource;//帮你完成数据源的自动装配 @Autowired private DeptDao deptDao; @Test void contextLoads() { System.out.println(dataSource); } }
6.springboot整合mybatis-plus
Mybatis-plus官网:(MyBatis-Plus)以Mybatis-plus官网为准。
(1)引入依赖
<dependencies> <!--mp的依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
(2)配置aplication.properties文件发
#德鲁伊 druid spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.username=root spring.datasource.druid.password=123456 spring.datasource.druid.url=jdbc:mysql://localhost:3306/mysql5_1?serverTimezone=Asia/Shanghai #初始化对象的连接个数 spring.datasource.druid.initial-size=5 #最多的连接数 spring.datasource.druid.max-active=10 #指定映射文件所在路径 mybatis.mapper-locations=classpath:/mapper/*.xml #sql-日志 控制台 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
(3)实体类
@Data @NoArgsConstructor @AllArgsConstructor @TableName("student") public class Student { @TableId(value = "id",type = IdType.AUTO) private Integer id; private String name; private String phone; private String email; private String profession; private Integer age; private int gender; private int status; @DateTimeFormat(pattern = "yyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GTM+8") private Date createtime; }
(4)dao层
public interface StudentDao extends BaseMapper<Student> { }
(5)扫描dao接口
@SpringBootApplication @MapperScan(basePackages = "com.aaa.dao") @EnableSwagger2 public class Myjava17Application { public static void main(String[] args) { SpringApplication.run(Myjava17Application.class, args); } }
(6)service层
public interface StudentService { public Result selectList(); public Result selectById(Integer id); }
(7)serviceImpl层
@Service public class StudentServiceImpl implements StudentService { @Autowired private StudentDao studentDao; public Result selectById(Integer id){ Student student = studentDao.selectById(id); return new Result(200,"查询成功",student); } }
(8)controller层
@RestController @RequestMapping("/student") //@Api(tags = "学生管理接口") public class StudentController { @Autowired private StudentService studentService; @GetMapping("/findbyid") public Result selectById(Integer id){ return studentService.selectById(id); }
(9)测试
(完)