学习的资料是尚硅谷学院发布的SpringBoot的教学视频,有理论有实战。
(1) 快速创建独立运行的Spring项目以及与主流框架集成
(2) 使用嵌入式的 Servlet 容器,应用无需打成 WAR 包
--备注:starters叫做启动器,需要什么样的业务服务就加载添加什么样的启动器,如web服务相关
(4) 大量的自灵配置己需配置 XML ,简化开发,无代码生成,也可修改默认值
J2EE全称为Java2 Platform Enterprise Edition。“J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了:·宿主应用的一个运行基础框架环境。·一套用来创建应用的Java扩展API。”
(1)微服务是一种架构风格,一组小型的服务,以HTTP的方式进行互通
(2)区别于“单体应用”,如整个服务器的war包,所有服务器相关的代码、资源都在一个包中。如果业务量庞大的话,单体应用,维护起来“不方便”
每个单元,应该是独立完整的功能单元,比如单独连数据库的单元,单独处理缓存的单元。
微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。
Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学了一点maven的人来说,就有些熟悉了,怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)
(1)JDK1.8 SpringBoot官方推荐1.7及以上
(3)IDEA,或者STS(官方推荐,安装了Spring插件)
(4)Spring Boot 1.5.9RELEASE 版本
设置Maven,maven的settings.xml文件添加profiles标签配置:
(我本地maven的安装路径:C:\Program Files\Java\apache-maven-3.3.9)
<activeByDefafult>true</activeByDefafult>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
看IDEA的Setting->Build Tools->Maven注意这几个设置:
具体参见Spring的官网:http://spring.io/projects/spring-boot,QuickStart的部分:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>1.5.6.RELEASE</version>
类前面的关键字:来标注一个主程序类,说明这是一个 Spring Boot应用
public class HelloController {
@ResponseBody//这个关键字,把hello 写给浏览器
@RequestMapping("/hello") //程序启动后,浏览器输入localhost:8080/hello,浏览器页面就能回显展示这句话
(6)导入一个Maven的自动打包的一个插件,配置文件xml添加以下代码:
<!--添加Maven插件,将应用打包成一个可执行的jar包-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
如下的代码引入,表示导入一个父项目(IDEA中点击这个配置groupId是可以跳转到定义的)
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
以后我们导入依赖默认不需要写版本(没有在dependencies里面管理的依赖需要声明版本号)
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
概念:Spring Boot的场景启动器,帮我们导入了Web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景都抽取出来,做成starters(启动器),只需要在项目中引入starters,相关的场景的所有依赖都会导入,用什么功能就导入什么场景启动器。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
类前面的关键字:来标注一个主程序类,说明这是一个 Spring Boot应用
public static void main(String[] args)
SpringApplication.run(HelloWorldMain.class, args);
@SrpingBootApplication:这注解表示 这个类是Spring Boot的主配置类,Spring Boot 就应该运行这个类的main()方法,来启动Spring Boot应用。
@Retention(RetentionPolicy.RUNTIME)
classes = {TypeExcludeFilter.class}
classes = {AutoConfigurationExcludeFilter.class}
public @interface SpringBootApplication {
@SpringBootConfiguration,Spring Boot的配置类,标注在某个类上,表示,这是一个Spring Boot的配置类;再次点到定义的话,还会有个注解@Configuration,配置类上来标注这个注解。这个配置类也就是配置文件。配置类,本身也是容器内的一个组件Component。
@EnableAutoConfiguration:开启自动配置功能
以前需要自己配置的东西,现在加了这个注解,告诉SpringBoot自动配置;并且生效;
@AutoConfigurationPackage:自动配置包
@Import({EnableAutoConfigurationImportSelector.class:这是一个底层注解,指定导入哪些组件;
其中@Import这个注解导入的组件有AutoConfigurationPackages.Register.class;
将主配置类@SpringBootApplication标识的类,它所在的包及下面所有子包里面的所有组件都扫描到Spring容器;
所有注意:所有的注解路径的类,都必须在主配置类的包或者子包(子文件中)!
此外,EnableAutoConfigurationImportSelector这个类,自动导入包的选择器。会将所有需要导入的组件以全类名的方式返回;这些组件会被添加到容器中;会给容器中导入非常多的自动配置类(XXXAutoConfiguration),就是给容器中导入所有需要的自动配置类;自动配置类如下:
EnableAutoConfiguration配置的值放在哪里?
在类路径下的META-INF/spring.factories文件中。(替换了一些我们以前需要自己配置的东西,自动配置类帮我们做了。)
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//需要留意的是,如果ResponseBody这个注解声明在类的前面,则表示该类的所返回结果直接返回给浏览器,但是如果声明在方法前面,表示该方法的结果返回给浏览器
@Controller //声明这是一个Controller
1.maven把程序打包成jar包的小插件,让启动程序更快了(我未验证)
2.Spring Boot的starters各种启动器,来帮助我们根据业务导入场景启动器方便开发
使用IDEA的Spring Initializr快速创建Spring Boot项目
直接在IDEA的菜单中找Spring Initializr,向导会联网创建项目。方法如图:
1.static:保存所有的静态资源,js css images
2.templates:保存所有的模板页面(String Boot默认jar包里使用嵌入式的Tomcat,默认不支持JSP页面),可以使用模板引擎(freemarker,themeleaf)-- 待学习这些模板引擎
3.application.properties:String Boot应用的配置文件;修改配置文件的默认设置。如下修改了访问端口: