android导入项目后run不了_SpringBoot2.x入门到项目实战课程系列(第二章)
项目源码:https://github.com/wenMN1994/SpringBoot第2章 Spring Boot 入门开发技术点要求:熟练 Spring 框架的使用熟练 Maven 依赖管理与项目构建熟练使用 Eclipse 或 IDEA2.1 环境要求jdk1.8 (Spring Boot 推荐jdk1.8及以上): java version “1.8.0_151”Maven 3.x (m
·
项目源码:https://github.com/wenMN1994/SpringBoot
第2章 Spring Boot 入门开发
技术点要求:
- 熟练 Spring 框架的使用
- 熟练 Maven 依赖管理与项目构建
- 熟练使用 Eclipse 或 IDEA
2.1 环境要求
- jdk1.8 (Spring Boot 推荐jdk1.8及以上): java version “1.8.0_151”
- Maven 3.x (maven 3.2 以上版本):Apache Maven 3.3.9
- IntelliJ IDEA :IntelliJ IDEA 2019.2.2 x64
- SpringBoot 使用当前最新稳定版本:第5章web开发前使用 2.0.6.RELEASE ,后面使用2.1.0.RELEASE
2.2 修改Maven配置文件
- 在 Maven 安装目录下的 settings.xml 配置文件中, 添加如下配置
D:javasourcemaven-repositoryalimavencentralaliyun mavenhttp://maven.aliyun.com/nexus/content/groups/public/jdk-1.8true1.81.81.81.8
2.3 IntelliJ IDEA 设置
- 在idea上将 maven 环境添加进来
2.4 快速构建 Spring Boot 项目
- 需求:浏览器发送 /hello 请求,服务器接受请求并处理,响应 Hello World 字符串
- 分析 :构建 Spring Boot 项目,事实上建立的就是一个 Maven 项目
2.4.1 创建 Maven工程
在 IDEA上新建一个空的jar类型 的 maven 工程
2.4.2 修改 pom.xml
- 在 pom.xml 中添加 Spring Boot 相关的父级依赖, spring-boot-starter-parent 是一个特殊的starter,
- 它提供了项目相关的默认依赖,使用它之后 ,常用的包依赖可以省去 version 标签。
- 在 dependencies 添加构建 Web 项目相关的依赖
org.springframework.bootspring-boot-starter-parent2.0.6.RELEASEorg.springframework.bootspring-boot-starter-web
- 我们会惊奇地发现,我们的工程自动添加了好多好多jar包, 这些 jar包正是开发时需要导入的jar包
2.4.3 创建控制器 Controller
package com.dragon.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class HelloController {@ResponseBody@RequestMapping("/hello")public String hello() {return "HelloWorld...";}}
2.4.4 创建一个引导类
- 主要作用是作为启动 Spring Boot 项目的入口
package com.dragon;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @SpringBootApplication 用于标识一个主程序类,说明当前是Spring Boot项目* @Description: com.dragon* @Auther: DragonWen* @Version: 1.0*/@SpringBootApplicationpublic class HelloMailAppliation {public static void main(String[] args) {SpringApplication.run(HelloMailAppliation.class, args);}}
2.4.5 运行效果
- 运行引导类后,会出现 如下一个标识,你能不能看出来下边这个图是什么东西?
- 在浏览器地址栏输入localhost:8080/hello 即可看到运行结果
2.4.6 简化部署
- 在 pom.xml 添加如下插件后, 将这个工程打成 jar 包后,可直接通过 java -jar 的命令运行
org.springframework.bootspring-boot-maven-plugin
- 如下操作进行打成 jar 包, 从控制台可发现 打成的jar包所在目录
2.5 Spring Boot项目底层原理
2.5.1 pom.xml文件
- spring-boot-starter-parent 是当前项目的父级依赖
// 当前hello项目的 父级依赖org.springframework.bootspring-boot-starter-parent1.5.9.RELEASE
- spring-boot-starter : Spring Boot 场景启动器,Spring Boot将所有的功能场景抽取出来,做成一个的starters(启动器),只需项目里引入相关场景的starter, 就会将它所有依赖导入进来。要用什么功能就导入什么场景的启动器。(各种启动器可参见官方文档 starter)
- spring-boot-starter-parent :它父依赖 spring-boot-dependencies,参见下面:
// spring-boot-starter-parent 的 父级依赖org.springframework.bootspring-boot-dependencies1.5.9.RELEASE../../spring-boot-dependencies
-
- spring-boot-dependencies 是管理了 Spring Boot项目中的所有依赖版本
-
- 以后 我们导入依赖默认不需要写版本号,也就是可以省去 version 标签;(当前没有在dependencies里面管理的依赖自然需要声明版本号)
- spring-boot-starter-web
org.springframework.bootspring-boot-starter-web
-
- 依赖导入了 Web 项目运行所依赖的组件;如 Tomcat / SpringMVC等
2.5.2 引导类
/*** @SpringBootApplication 用于标识一个引导类,说明当前是Spring Boot项目* @Auther: www.dragon.com*/@SpringBootApplicationpublic class HelloMailAppliation {public static void main(String[] args) {SpringApplication.run(HelloMailAppliation.class, args);}}
- 通常有一个名为 *Application 的入口 类,里面定义一个main方法,使用
SpringApplication.run(HelloMailAppliation.class, args); 来启动 SpringBoot 应用项目 - @SpringBootApplication 注解主要组合了 @SpringBootConfiguration、@EnableAutoConfiguration、
@ComponentScan - @SpringBootApplication 注解说明:
- 标注在某个类上, 说明这个类是 Spring Boot 的引导类,Spring Boot 就应该运行这个类的main方法来启动 SpringBoot 应用;
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })public @interface SpringBootApplication {
-
- @SpringBootApplication 是以下3个注解的总和:
- @SpringBootConfiguration:用于定义一个Spring Boot的配置类( 配置类 等同 配置文件)
- 引用了 @Configuration 注解,是Spring底层的一个注解,用于定义 Spring 的配置类。
- 配置类也是容器中的一个组件 @Component
- @EnableAutoConfiguration :
- 告诉Spring Boot开启自动配置功能,这样Spring Boot会自动根据你导入的依赖jar包来自动配置项目。
- @SpringBootConfiguration:用于定义一个Spring Boot的配置类( 配置类 等同 配置文件)
- @SpringBootApplication 是以下3个注解的总和:
@AutoConfigurationPackage@Import({AutoConfigurationImportSelector.class})public @interface EnableAutoConfiguration {
-
-
-
- @AutoConfigurationPackage ——》 @Import({Registrar.class})
- 会将引导类(@SpringBootApplication标注的类)所在的包及下面所有子包里面的所有组件扫描到Spring容器;
- @Import({AutoConfigurationImportSelector.class})
- 将所有需要导入的组件以全类名的方式返回; 这些组件就会被添加到容器中
- 会给容器导入非常多的自动配置类(xxxxAutoConfiguration),就是导入并配置好当前项目中所需要的组件,省去我们手动编写配置去注入组件.
- @AutoConfigurationPackage ——》 @Import({Registrar.class})
-
-
- Spring Boot在启动的时候从(spring-boot-autoconfigure-2.0.6.RELEASE.jar)类路径下的METAINF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的文件,自动配置类都帮我们完成了;
- @ComponentScan: 该注解标识的类, 会被 Spring 自动扫描并且装入bean容器。
2.6 使用Spring初始化器创建Spring Boot项目
- 注:初始化向导需要联网创建Spring Boot项目
- 引入功能模块
- 默认生成的Spring Boot项目;
-
- 删除不需要的文件与目录 , spring-boot-starter-test 是 Spring Boot 单元测试模块
- 引导类已经生成了,我们只需要实现业务即可
- resources 文件夹中目录结构:
- static :保存所有的静态资文件, js css images
- templates :保存所有的模板页面(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面),可以使用模板引擎(freemarker、thymeleaf);
- application.properties :Spring Boot应用的配置文件;可以修改一些默认设置;
如修改默认端口 server.prot=8081
持续更新
上一篇:第1章 Spring Boot 概要
下一篇:第3章 Spring Boot 核心配置
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)