spring boot 原理、demo 与打包运行
来源:互联网 发布:java项目中多线程使用 编辑:程序博客网 时间:2024/05/29 09:35
Spring Boot的背景,我们为什么要用它,它能给我们带来什么遍便利?
回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用gradle来构建的话基本也一样)然后新建Spring相关的xml文件,而且往往那些xml文件还不会少。然后继续使用tomcat或者jetty作为容器来运行这个工程。基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一个Spring web工程来测试一些东西,或者是希望能节省时间。
现在我们使用Spring Boot就可以快速的做到这些了。spring boot可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server。
Spring boot 的理念:
从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。简便起见,该框架也提供了命令行界面,它可以用来运行和测试Boot应用。框架的发布版本,包括集成的CLI(命令行界面),可以在Spring仓库中手动下载和安装。
实际中springboot将应用打包之后,会生成一个fat jar,里面包含了应用依赖的jar包,还有Spring boot loader相关的类
Fat jar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader来加载/lib下面的jar,并以一个新线程启动应用的Main函数。LaunchedURLClassLoader和普通的URLClassLoader的不同之处是,它提供了从Archive里加载.class的能力。结合Archive提供的getEntries函数,就可以获取到Archive里的Resource。当然里面的细节还是很多的。(详细查看源码)
Spring boot 实现?
Spring Boot 推荐采用基于 Java 注解的配置方式,而不是传统的 XML。只需要在主配置 Java 类上添加“@EnableAutoConfiguration”注解就可以启用自动配置。Spring Boot 的自动配置功能是没有侵入性的,只是作为一种基本的默认实现。开发人员可以通过定义其他 bean 来替代自动配置所提供的功能。比如当应用中定义了自己的数据源 bean 时,自动配置所提供的 HSQLDB 就不会生效。这给予了开发人员很大的灵活性。既可以快速的创建一个可以立即运行的原型应用,又可以不断的修改和调整以适应应用开发在不同阶段的需要。可能在应用最开始的时候,嵌入式的内存数据库(如 HSQLDB)就足够了,在后期则需要换成 MySQL 等数据库。Spring Boot 使得这样的切换变得很简单。
@EnableAutoConfiguration”注解的作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这就减少了开发人员的工作量。@EnableAutoConfiguration注解会告知Boot要采用一种特定的方式来对应用进行配置。这种方法会将其他样板式的配置均假设为框架默认的约定,因此能够聚焦于如何尽快地使应用准备就绪以便运行起来。
Spring Boot 的这个配置优先级看似复杂,其实是快速地修改配置参数值,而不需要重新打包和部署应用。
Spring boot的配置和使用:
1. 首先需要新建一个普通的maven 工程;
2. 要在pom.xml文件中添加依赖如下
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>spingboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.0.0.RC1</version>
</parent>
<!-- Add typicaldependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/libs-snapshot</url>
</pluginRepository>
</pluginRepositories>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.运行
第一种方式
通过在UserController中加上@EnableAutoConfiguration开启自动配置,然后通过SpringApplication.run(UserController.class);运行这个控制器;这种方式只运行一个控制器比较方便;
代码如下:
@RestController
@EnableAutoConfiguration
public class Application {
@RequestMapping("user")
public static StringSayHello() {
return"Hello Word!";
}
public static voidmain(String[] args){
SpringApplication.run(Application.class,args);
}
}
第二种方式
通过@Configuration+@ComponentScan开启注解扫描并自动注册相应的注解Bean
代码如下:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static voidmain(String[] args){
SpringApplication.run(Application.class,args);
}
将工程打包成独立运行jar包
进入cmd 定位到项目目录下然后执行 mvn clean package –DskipTests
然后会在项目的target文件夹下出现jar包例如(spingboot-demo-0.0.1-SNAPSHOT.jar)
然后再cmd 的C盘 用户目录下执行命令$ java –jar (jar包的目录)E:\program\spingboot-demo\target\spingboot-demo-0.0.1-SNAPSHOT.jar
回车运行会有如下图
出现下图表示运行成功
然后在浏览器中输入端口号和地址进行访问。
这就立马能够明白spring boot 的优势了,直接一个jar 包和java 环境就能运行web 项目了
遇到的问题:端口占用问题
运行独立jar包时可能会出现端口占用问题,springboot的内嵌tomcat的端口是8080这个端口可能会被oracle (我就是)占用或者 tomcat(默认8080)占用所以我们要重新配置内嵌tomcat的端口号步骤如下
1. 在resource目录下新建application.properties文件(文件名一定要application.properties因为这个是默认的配置,如果文件名字不是这个则需要手动的添加识别)配置如下图
- spring boot 原理、demo 与打包运行
- Spring Boot 运行原理
- Spring Boot 运行原理
- Spring Boot 运行原理
- Spring Boot 运行原理
- Spring Boot 运行原理
- Spring Boot运行原理
- 学习spring-boot第一节demo运行与web启动
- spring boot-2(运行原理)
- spring boot打包jar直接运行
- Spring boot 的打包和运行
- 3Spring Boot 运行原理,自动配置
- Spring Boot WAR包运行原理分析
- Spring Boot 运行原理之自动配置
- SpringBoot15-springboot核心-Spring Boot运行原理
- spring boot 运行jsp原理分析
- Spring boot 第一个DEMO 运行报错
- spring boot 打包成jar 在服务器上运行
- Ubuntu 15.10 x64 安装 Android SDK
- 阅读中遇到的一些概念
- ios开发——日常之iOS系统控件高度
- 利用ndk c/c++ 实现android短信部分功能
- Build Nginx Http/Tcp proxy server Guide Line
- spring boot 原理、demo 与打包运行
- Android 动画详解
- 关于XML解析
- Objective-C Runtime 一小时入门教程(上)
- 【亲测】ubuntu14.10建立热点wifi分享给手机
- [nodejs] 格式化日期、ejs模板引擎改变.ejs为.html、mongoose查询所有
- Maven 打jar包配置
- 银行业务的一些概念
- 关于全局变量,局部变量的一些看法!!!