SpringBoot中简便最大的原因在于取消了个性化设置,例如,并不像Spring中applicationContext.xml文件,名字和个数都可以个性化进行设置,而SpringBoot中必须是在application.properties文件中进行环境相关项配置,名称都无法随意进行更改,但是SpringBoot支持了两种文件格式,properties和YAML文件(YAML文件的优势在于更好的兼容中文注解)
SpringBoot中打包部署是微架构一大优势,其打包成jar文件,利用编译运行jar包即可在环境中运行,可以更好的与云计算进行结合,在启动服务器的选择上,默认Tomcat也可以选择Jetty,Jetty的优势在于更轻量,与Tomcat相比,少了很多拓展插件.Jetty更满足公有云的分布式环境的需求(聊天软件等长连接项目),而Tomcat更符合企业级环境。
一.SpringBoot推荐项目编写层级
控制层程序所在包附属在主程序包下
二.SpringBoot控制层部分易错注解详解
@Controller和@RestController
在SpringBoot中Return返回的字符并不是默认字符串或JSON,它也可以代表网址,如果在@Controller下不加@ResponseBody就会默认为跳转的网址.网址的默认后缀是*.html
@RequestMapping("/")
//该注解表示直接将返回的以字符串或JSON的形式进行返回
@ResponseBody
public String home(){
return "www.baidu.com";
}
@SpringBootApplication
此注解只能默认扫描主类子包,SpringBoot官方建议控制类需要写在主类的子包下
SpringBootApplication相当于@Configuration+@EnableAutoConfiguration+@ComponentScan
@EnableAutoConfiguration自动配置SpringBoot文件
@ComponentScan 配置扫描包,在执行主类的时候,去扫描发现Controller
三.SpringBoot传递与接收数据的方式
地址重写
输入网址 http://localhost:8080/echo?echo=666
@RequestMapping("/echo")
public String home1(String echo){
return "Echo"+echo;
}
成功接收到数据
网址数据传输
输入网址http://localhost:8080/hello/hi
@RequestMapping(value = "/hello/{message}",method = RequestMethod.GET)
public String home2(@PathVariable("message") String message){
return "hello"+message;
}
成功接收到数据
四.SpringBoot内置Servlet对象
SpringBoot同样兼容Servlet对象,完成查找session等核心操作
@RequestMapping("/Testjsp")
public void Testjsp(HttpServletRequest request, HttpServletResponse response){
System.out.println("SessionID:"+request.getSession().getId());
System.out.println("ContextPath"+request.getServletContext().getRealPath("/sheng"));
System.out.println("客户端IP地址:"+request.getRemoteAddr());
System.out.println("传输响应编码:"+request.getCharacterEncoding());
}
五.SpringBoot配置文件
改变登陆端口号,SpringBoot的配置文件application,不可变更名称
启动主程序
变更成功
六.SpringBoot变更服务器
修改pom.xml文件剔除Tomcat,并添加Jetty
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除默认的tomcat,引入jetty容器-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- jetty 容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
七.SpringBoot更新代码后自动加载
在传统开发中,每修改一次代码都需要重新启动一次服务器进行查看最新代码部署情况,SpringBoot为了解决这一窘境,开发了自动加载插件,每当新的代码被保存后,都会自动进行重新加载
加入jar
<!--SpringBoot为了解决每次改写程序都需要重启服务的尴尬局面,特设计了如下两个包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
打开IDEA设置允许自动编译操作
pom.xml文件内项目自动打包部署
<build>
<plugins>
<!--该插件的作用是项目打包处理-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--配置自动部署-->
<configuration>
<!--设置程序执行的主类-->
<mainClass>cn.sheng.microboot.MicrobootApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
八.application.properties文件配置
SpringBoot之所以简洁方便,根本原因在于它舍弃很多个性化的设置,所以配置名千万不要改,在此配置文件,可以修改端口号,绝对路径等信息。
#修改web服务器的端口号
server.port=80
#添加properties配置文件的路径
spring.messages.basename=i18n/message
九.零配置环境下,如何接入SSM开发的bean配置文件
在启动类中加入@ImportResource(locations = {“classpath:”})
十.SpringBoot下的模板引擎和静态页面
因为SpringBoot舍弃了大多个性化的配置,所以static目录,要求存放的是无需后台跳转数据处理的静态页面(js,css,image),而templates目录下要求存放的是需处理后台跳转数据带来的模板引擎(Thymeleaf)。
十二.SpringBoot自带的表单注入检测
可以通过给vo类注解标签 @NotNull @Length @Email 来验证vo类的注入情况,表单提交的数据是否符合规则
在Action给vo类绑定@Valid检测,以及BindingResult注入检测结果
十二.SpringBoot异常页面的跳转管理
在static目录下导入静态错误页面,然后创建@configuration处理类,利用WebServrFatoryCustomizer类进行异常页面跳转的管理
package com.example.seckill.Configuration;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
@Configuration
public class ErrorPageConfigure {
@Bean
public WebServerFactoryCustomizer webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
ErrorPage errorPage400=new ErrorPage(HttpStatus.BAD_REQUEST,"/404Error.html");
ErrorPage errorPage404=new ErrorPage(HttpStatus.NOT_FOUND,"/404Error.html");
ErrorPage errorPage500=new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR,"/404Error.html");
factory.addErrorPages(errorPage400,errorPage404, errorPage500);
}
};
}
}