背景
地点:长沙欧富安科技园1栋5楼节点飞思
时间:2023/9/18~23
大致内容:SpringBoot
前言
作为Java最伟大的框架,想要学好它还是需要花点功夫,还得不仅仅只停留在使用阶段,对其源码的剖析也是尤为重要的,它能更好的帮助我们了解SpringBoot,从而创建独属于自己的SpringBoot。
SpringBoot
创建方式
macen(荐)
需要启动类,手动导入依赖,但无需网络。
Spring Initializr
首先得去官网下载项目和填写资料,需要启动类,网络,但能自动生依赖。
pom.xml
通过Maven新建的Spring boot需要继承此父类
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.3</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--日志打印-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</dependency>
<!--mysql-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
启动类
作为SpringBoot的特点,需要创建一个Application类
package com.zs.app;
import com.zs.bean.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//1、有一个main
//2、注解 @SpringBootApplication
//相当于配置了@ComponentScan("com.zs.app")
//底层原理是springboot获取了当前启动类所在包,然后自动配置了
@Slf4j(topic = "e")
@SpringBootApplication
public class BootApplication {
public static void main(String[] args) {
//BootApplication.class
//SpringApplication.run(BootApplication.class,args);
var iocContext = SpringApplication.run(BootApplication.class,args);
//所有bean都会在getBeanDefinitionNames这个当中
String[] beanDefinitionNames = iocContext.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
log.debug(beanDefinitionName);
}
}
}
Controller
所在的包一定是启动类所在的包或者子包,如果不满足包的规则,则无法生效。
package com.jdfs.web;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@Slf4j(topic = "e")
@Controller
public class IndexController {
//请求体,可通过该路径找到该方法
@RequestMapping("/index")
//响应体,可以拿到返回值
@ResponseBody
public String index(){
log.debug("Hello World");
return "index";
}
@RequestMapping("/map")
@ResponseBody
public Map<String, Object> map(){
log.debug("Hello World");
Map<String, Object> map = new HashMap<>();
map.put("Key","值");
return map;
}
}
部署与发布
package:在该模块的target目录下创建
控制台运行命令:java -jar xxx.jar
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Mybatis
application.yml
#Mysql和数据源配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/train?serverTimezone=Asia/Shanghai
username: root
password: root
#sql语句存放位置以及别名设置
mybatis:
mapper-locations: classpath*:mappers/*.xml
type-aliases-package: com.jdfs.entity
静态资源访问
前后端分离,一般不过后台,在页面中直接跳转,如果需要过后台来跳转页面需要配置视图解析器
spring.mvc.view.prefix=/ "/"表示默认静态资源的访问路径(resources目录下的public、static、META-INF.resources)
spring.mvc.view.suffix=.html ".html"表示返回值的字符串后缀
总览
总结
今日听君歌一曲,暂凭杯酒长精神