- 去除xml配置
- 全部使用注解开发
- 内嵌入tomcat
- 快速开发
-
创建maven项目
-
引入依赖
spring-boot-starter-parent org.springframework.boot 2.6.7 org.springframework.boot spring-boot-starter-web -
引入这些依赖后就相当于引入了spring,springMVC,Tomcat等依赖
- controller:视图层(web页面即跳转)和接口(业务逻辑)
- service:接口层(业务逻辑)
- dao:数据库访问层
- RestController注解规定了该类所有的URL映射都是返回JSON格式,由springMVC提供,协议为Http协议
- 和Controller的区别:如果使用Controller注解,那么该类如果想返回JSON格式的数据,需要再加上@ResponseBody注解,使用@RestController则不需要这一句冗余的代码,如果不加@ResponseBody,那么controller注解的类的方法返回值会默认跳转到另一个页面,即返回一个视图路由信息
- @ResponseBody:将数据传输类型变为JSON类型
-
给任意类加上@EnableAutoConfigration注解,然后添加main方法,main方法代码:
public static void main(String[] args) { SpringApplication.run(HelloWorld.class, args); //两个参数,启动类的class和参数 } //这种做法只能扫描到当前类的路由信息可以在类上添加@ComponentScan()注解,在参数中添加扫描的包路径即可 //@EnableAutoConfiguration//启动类注解 //@ComponentScan("com.springboot.service")//解析路由时扫描包的注解 -
创建启动类,为启动类添加@SpringbootApplication注解,这个注解包含了@EnableAutoConfiguration和@ComponentScan注解,并且扫描包时在从同级目录开始寻找。代码:
@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class); } }
- 在项目中,图片,js代码,css代码常作为静态资源,使用时引入即可,这种资源放置方式为在resource目录下新建static目录,放置到static目录下即可通过ip:端口号/文件名 来访问: http://localhost:8080/img.png
两种方式
-
application.properties:
user1.name =name22 user.age = 22
特点:冗余
-
application.yml
user1: name: zhh age: 23
配置方法:注解配置:
@Value("${user1.name}") private String name; @Value("${user1.age}") private String age;
-
导入freemarker依赖:
org.springframework.boot spring-boot-starter-freemarker -
建立controller目录用来返回视图跳转信息
-
建立controller类:
@Controller public class freemarkerIndexController { @RequestMapping("/freemarkerIndex") public String freemarkerIndex(Mapresult, HttpServletRequest request){ result.put("name","zhanghualong");//result用来存储信息,在视图中可以直接使用${var}形式来访问数据 //${var}的值为result.get(var) return "freemarkerIndex";//这里的返回值为视图名,springboot会自动在resource/templates下寻找对应的.ftlh文件 } } -
建立视图
Welcome! ${name}注:这里使用了freemarker引擎,这个引擎的作用是将我们写好的视图文件和后端文件一并解析为html文件,比如视图中的${name},就是freemarker负责解析,几种常见语法:
<#if sex==0> 男 <#elseif sex==1> 女其他 #if> <#list userList as user> ${user} #list> -
向视图中传值的两个方式
-
用参数传递:
public String freemarkerIndex(Map
result){} //此时result就会被传递到视图页面中 -
用HttpServletRequest request传递
public String freemarkerIndex(HttpServletRequest request){ request.setAttribute("user1","bageyalu"); }
-
-
在.yml或者.properties问价中设置属性值,有两种方式可以引入实体类:
-
@Value注解:
public class HelloWorld { @Value("${user1.name}") private String name; @Value("${user1.age}") private String age; } -
自动注入
@Component//将这个类注解为一个bean对象,其他引用这个对象可以直接用Autowired注解自动装配这个对象 @ConfigurationProperties(prefix = "user1")//参数为配置的类名 @Data//这个注解为lombok注解,为这个类提供了get和set方法,有参构造和无参构造以及tostring方法等方法 public class NiuMaEntity { private String name; private String age; private String add; }
-
-
自动配置实例:
@Component @ConfigurationProperties(prefix = "user1") @Data public class NiuMaEntity { private String name; private String age; private String add; } @RestController public class NiuMaController { @Autowired private NiuMaEntity niuMaEntity; @RequestMapping("/getNiuMa") public String getNiuMa(){ return niuMaEntity.getName() +","+niuMaEntity.getAge()+","+niuMaEntity.getAdd(); } }
-
在配置文件中,我们可以使用一些占位符来输出随机数等内容:如 r a n d o m . v a l u e 、 {random.value}、 random.value、{random.int}、${random.long}
r a n d o m . i n t ( 10 ) 、 {random.int(10)}、 random.int(10)、{random.int[1024,65536]},${app.name:默认值}
-
user1: name: zhl age: ${random.int(10)} add: 兰州
### 11,多个配置文件设置springboot访问路径:
```yml
spring:
profiles:
active: pre
在application.yml中如此配置,则会自动寻找到命名为application-pre.yml的文件
12,修改springboot项目启动端口和添加访问路径server:
port: 8081
servlet:
context-path: /zhl
13,输出日志
-
springboot中共有三种日志,分别是info,sql和error,info用来输出系统级日志,error输出错误信息,sql记录数据库访问日志
-
添加配置信息,在resource目录下新建目录log,在log中新建logback.xml,在此文件中输入以下代码:
%d %p (%file:%line)- %m%n UTF-8 log/file/fileLog.log log/file/fileLog.log.%d.%i 64 MB %d %p (%file:%line)- %m%n UTF-8 log/sql/sqlFile.log log/sql/sqlFile.log.%d.%i 64 MB %d %p (%file:%line)- %m%n UTF-8 log/error/errorFile.log log/error/errorFile.%d.log.%i 64 MB %d %p (%file:%line)- %m%n UTF-8 ERROR ACCEPT DENY -
在yml文件中配置日志访问路径:
logging: config: classpath:log/logback.xml -
日志会自动存储到当前项目路径/log下,有filelog,errorlog,sqllog三个文件夹
-
需要输出日志的类上添加@Slf4j注解,即可在类中调用log.info(),log.error(),log.debug()等方法:
log.info("user+{}",niuMaEntity.toString());//花括号代表变量,都好后写变量值即可
@Component
public class ScheduledTasks {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)//fixedRate参数可以设置执行间隔,单位为秒,也可以使用cron参数,详见https://www.bejson.com/othertools/cron/
public void reportCurrentTime() {
System.out.println("现在时间:" + dateFormat.format(new Date()));
}
}
15,全局捕获异常:
-
建立捕获异常的类,并在类上添加@ControllerAdvice注解,表明这个类是全局捕获异常的类
@ControllerAdvice public class MayiktExceptionHandler { @ExceptionHandler(RuntimeException.class)//注解意义为对所有在运行的类捕获异常 @ResponseBody//注解返回格式,加ResponseBody就是返回json格式,不加就是返回视图路由信息 public Map
16,打包应用程序
-
先用mvn程序将程序打包
mvn clean package//在当前路径下即可
-
用java -jar 包名运行
-
注:打包前需要在pom文件中加入如下代码指明程序的入口类,不然在运行时会报一个未能识别主清单的错误。
org.springframework.boot spring-boot-maven-plugin repackage com.mayikt.App junit junit org.springframework.boot spring-boot-starter-test



