Spring Boot 微框架
0. 近期spring boot 2.5.0、2.4.6、2.3.11 正式发布。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> </parent>
新特性
支持 Java16 支持 Gradle7 增强 Docker 镜像构建工具 全新的数据源加载机制
重要变更说明
数据源相关变更
spring.datasource.* 已被 spring.sql.init.* 属性替代。
Flyway 和 Liquibase 需要指定单独的 username / password,不再从 datasource 继承。
不再维护 spring data solr , 从此版本开始 已经开始从源码中移除。
断点 /info 不再通过 web 暴露,如果类中包含 spring security,需要安全验证。
EL 语法实现由 tomcat-embed-el 替代为 jakrta-el。
Error View 异常页面中不会包含 具体的错误信息,如果需要则可以通过 server.error.include-message开启。
通过 logging.register-shutdown-hook 属性可以在 jvm 退出时释放日志资源。
1. springboot的引言
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的 初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不 再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应 用开发领域(rapid application development)成为领导者。
springboot(微框架) = springmvc(控制器) + spring(项目管理)
2. springboot的特点
创建独立的Spring应用程序
嵌入的Tomcat,无需部署WAR文件
简化Maven配置
自动配置Spring
没有XML配置
3. springboot的环境搭建
环境要求:
- MAVEN 3.x+
- Spring FrameWork 5.x+
- JDK8.x +
- Spring Boot 2.2.x+
3.1 项目中引入依赖
<!--继承springboot的父项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> </parent> <dependencies> <!--引入springboot的web支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
3.2 引入配置文件
项目中src/main/resources/application.yml
3.3 建包并创建控制器
//在项目中创建指定的包结构 /* com +| libin +| controller */ @Controller @RequestMapping("/hello") public class HelloController { @RequestMapping("/hello") @ResponseBody public String hello(){ System.out.println("======hello world======="); return "hello"; } }
3.4 编写入口类
//在项目中如下的包结构中创建入口类 Application /* com +| libin */ @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }
3.5 运行main启动项目
o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8989 (http) com.libin.Application : Started Application in 2.152 seconds (JVM running for 2.611) //说明: 出现以上日志说明启动成功
3.6 访问项目
//注意: springboot的项目默认没有项目名 //访问路径: http://localhost:8080/hello/hello
4. 启动tomcat端口占用问题
server: port: 8999 #用来指定内嵌服务器端口号 context-path: /springboot #用来指定项目的访问路径
5. springboot相关注解说明
# Spring boot通常有一个名为 xxxApplication的类,入口类中有一个main方法, 在main方法中使用SpringApplication.run(xxxApplication.class,args)启动springboot应用的项目。 # @SpringBootApplication 注解等价于: @SpringBootConfiguration 标识注解,标识这是一个springboot的配置类 @EnableAutoConfiguration 自动与项目中集成的第三方技术进行集成 @ComponentScan 扫描入口类所在子包以及子包后代包中注解
6. springboot中配置文件的拆分
#说明: 在实际开发过程中生产环境和测试环境有可能是不一样的 因此将生产中的配置和测试中的配置拆分开,是非常必要的在springboot中也提供了配置文件拆分的方式. 这里以生产中项名名称不一致为例: 生产中项目名为: cmfz 测试中项目名为: springboot 端口同时为: 8080 拆分如下: #主配置文件: application.yml #用来书写相同的的配置 server: port: 8080 #生产和测试为同一个端口 #生产配置文件: application-pord.yml server: context-path: /cmfz #测试配置文件: application-dev.yml server: context-path: /springboot
7.springboot中管理对象创建
7.1 管理单个对象
在springboot中可以管理自定义的
简单组件
对象的创建可以直接使用注解形式创建。
# 1.使用 @Repository @Service @Controller 以及@Component管理不同简单对象 如: 比如要通过工厂创建自定义User对象:
@Component public class User { private String id; private String name; ...... }
# 2.通过工厂创建之后可以在使用处任意注入该对象 如:在控制器中使用自定义简单对象创建
@Controller @RequestMapping("hello") public class HelloController { @Autowired private User user; ...... }
7.2 管理多个对象
在springboot中如果要管理
复杂对象
必须使用@Configuration + @Bean
注解进行管理
# 1.管理复杂对象的创建
@Configuration(推荐)|@Component(不推荐) public class Beans { @Bean public Calendar getCalendar(){ return Calendar.getInstance(); } }
# 2.使用复杂对象
@Controller @RequestMapping("hello") public class HelloController { @Autowired private Calendar calendar; ...... }
# 注意: 1.@Configuration 配置注解主要用来生产多个组件交给工厂管理 (注册形式) 2.@Component 用来管理单个组件
8. springboot中集成jsp展示
8.1 引入jsp的集成jar包
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--2.2.5 之后最新版本中无须引入--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
8.2 引入jsp运行插件
<build> <finalName>springboot_day1</finalName> <!--引入jsp运行插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments> </configuration> </plugin> </plugins> </build>
8.3 配置视图解析器
#在配置文件中引入视图解析器 spring: mvc: view: prefix: / # /代表访问项目中webapp中页面 suffix: .jsp
8.4 启动访问jsp页面
http://localhost:8999/cmfz/index.jsp