创建springboot项目:
首先更改一下url,点击小齿轮改成https://start.aliyun.com/
首先在选模块的时候选上SpringWeb,然后jdk1.8对应的springboot版本是2.6.13或者2.7.6
pom.xml:
用1.8的jdk,mybatis的包版本不能太高
<!-- mybatis包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<!-- mysql驱动包-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.3.0</version>
</dependency>
application.yml:
这里给resultType起别名,扫描xml文件,stdout打印
server:
port: 8080
#数据库连接
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/aatest?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: root
#mybatis配置相关:起别名,扫描xml文件,stdout打印
mybatis:
type-aliases-package: com.hz.springtest01.pojo
mapper-locations: classpath:/mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
Springtest01Application.java:
@SpringBootApplication注解自动扫描controller包和service包
@MapperScan扫描mapper这个接口包
@SpringBootApplication
@MapperScan("com.hz.springtest01.mapper")
public class Springtest01Application {
public static void main(String[] args) {
SpringApplication.run(Springtest01Application.class, args);
}
}
使用jar包运行springboot项目:
首先要在pom.xml中用<classifier> </classifier>标签给mainClass这个标签加上后缀
不然会生成两个相同的包,这两个包因为重名会自动覆盖,所以要给这个包加上后缀
然后先使用clean把target包删除,然后再打包,控制台有路径
然后在相应路径下使用
java -jar 包名称
springboot配置外部容器:
先把内置的tomcat去除掉
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--移除tomcat-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
springboot的注解:
这四个注解用来允许通过外部配置 来创建bean:
@Bean@Value
@Configuration
@PropertySource
@ConfigurationProperties(prefix = "chmy")
prefix
用于指定从配置文件中获取属性的前缀 "chmy"
。
chmy.yml
chmy:
name: "陈梦雨"
age: 18
AppBootConfig.java
@PropertySource("classpath:chmy.yml") //读取文件
@ConfigurationProperties(prefix = "chmy") //前缀
@Configuration //容器启动时加载
public class AppBootConfig {
@Value("${name}")
private String name;
@Value("${age}")
private int age;
@Bean("chmy")
public Chmy infoChmy(){
Chmy chmy = new Chmy();
chmy.setName(name);
chmy.setAge(age);
// 将对象放入spring容器中
return chmy;
}
}
ChmyController.java
@RestController
@RequestMapping("/chmy")
public class ChmyController {
@Resource
private Chmy chmy;
@GetMapping("/chmy")
public ResultJSON chmy(){
System.out.println(chmy.toString());
// 返回封装后的结果
return ResultJSON.success();
}
}
@ComponentScan:扫包
注意:
@SpringBootApplication注解也包含了三个注解:
@EnableAutoConfiguration
:启用自动配置。@ComponentScan
:启用组件扫描。@Configuration
:标记该类为配置类。
也可以用@SpringBootApplication注解的scanBasePackages属性进行配置
@SpringBootApplication(scanBasePackages ={"com.hz.service","com.hz.controller"})
@EnableTransactionManagement:开启事务注解
@MapperScan("com.hz.dao"):扫描mapper接口
application.yml的其他情况:
这个dev表示当前环境是开发环境,改成test就是测试环境
spring:
profiles:
active: dev #引入后缀为dev的文件
SpringBoot配置文件——加载顺序
如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml
@CrossOrigin:跨域请求
全局异常捕获:
在java下创建包exception,并创建文件GlobalException
这样就会输出报错的json数据,而不是那种空白页面
@ControllerAdvice(basePackages = "com.hz.springtest01")
@Slf4j
public class GlobalException {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public ResultJSON handleException(RuntimeException e){
log.error("系统异常:",e);
return ResultJSON.error("请求失败:"+e);
}
}
自定义异常:
就直接继承 RuntimeException,然后生成一个传入String的构造方法,就可以自定义了
public class IdException extends RuntimeException{
public IdException(String message) {
super(message);
}
}
触发这个异常:这样就会在id=4的时候有这种
if (id==4){
throw new IdException("ID不能为4");
}