简介:

Springboot 来简化spring应用开发,约定大于配置,去繁从简,just run 就可以创建一个独立的,产品应用

背景:

J2EE笨重开发,繁多的配置,低下的开发效率,复杂的部署流程,第三方集成难度大

解决:

spring全家桶时代
spring boot   j2EE 一站式解决方案
Spring Cloud  分布式整体解决方案

优点:

快速创建独立运行的spring项目
使用嵌入式的servlet容器,无需达成war包
starters自动的依赖管理和版本控制
大量的自动配置,简化开发,
无需xml文件的配置,无代码生成
准生产环境的运行时的应用监控
与云计算天然集成

SpringBoot入门:

1、Spring Boot 简介
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案;
 
2.微服务
2014,martin fowler
微服务:架构风格(服务微化)
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
单体应用:ALL IN ONE
微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;

关于maven的配置

将下面代码配置在maven的配置文件中

<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

所谓的HelloWord程序

创建一个新的maven工程

在pom文件中中加入:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5..RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

如图所示:写一个controller

HelloController.java

@Controller
public class HelloController { @ResponseBody
@RequestMapping("/hello")
public String hello(){
return "helloword";
}
}

HelloWord.java

//来标注一个springboot主程序,说明是springboot应用
@SpringBootApplication
public class HelloWord {
public static void main(String[] args) {
//spring应用程序启动
SpringApplication.run(HelloWord.class,args);
}
}

直接运行main函数的工程

默认访问的网址会得到一个错误的访问页面:

在默认的网址后面加上/hello请求

简化部署:

<!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
利用maven进行打包(package.....
成jar文件
然后找到该目录
执行
java -jar  XXXX.jar

此时也可以进行访问

探究一下POM文件:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5..RELEASE</version>
</parent>

父项目是:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5..RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>

真正管理springboot应用里面的所有依赖

之后开发导入依赖不需要写版本
没有在其中管理的需要些版本号

导入的依赖:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter-web:
spring boot 场景启动器,帮助我们导入web模块正常运行的依赖组件
根据我们的需要进行导入
参考网址

https://docs.spring.io/spring-boot/docs/1.5.19.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-starter

可以根据我们的需要进行相关的依赖导入!

spring boot将所有的场景抽取出来,做出一个starters启动器,只需要在项目中引入这些
starter相关的场景所有依赖都会导入进来。

主程序:

//来标注一个springboot主程序,说明是springboot应用
@SpringBootApplication
public class HelloWord {
public static void main(String[] args) {
//spring应用程序启动
SpringApplication.run(HelloWord.class,args);
}
}
@SpringBootApplication:  标注在那个类上就说明这个类是Springboot的主配置类
            SpringBoot就应该运行这个类的main方法来启动springboot引用

@SpringBootApplication:

@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 {

1.@SpringBootConfiguration:Spring Boot的配置类,标注在某个类上,表示这是springboot的配置类!

  

  @Configuration:配置在类上来标志这个注解

  配置类也是容器中的一个组件:@Componment

2.@EnableAutoConfiguration: 开启自动配置功能

  之前需要手动配置的东西,SpringBoot自动来配置,不需要进行手动配置

  该注解是开启自动配置的功能

  

  2.1 @AutoConfigurationPackage: 自动配置Spring底层的注解

    @Import

    @Import(AutoConfigurationaPackage.Registrar.class):将主配置类(@SpringApplication标注的类)

    的包以及子包里面的组件扫描到容器中

  2.2 @Import({EnableAutoConfigurationImportSelector.class}):给容器中导入组件

    EnableAutoConfigurationImportSelector:将所需要导入的组件以全类名方式、这些逐渐就会添加到容

    器中,会给容器增加非常多的自动配置

    (xxxAutoConfiguration):就是给容器中导入相应的组件,并且配置好这些组件

springboot在启动的时候从类路径下MEAT-INF/spring.factories中获取EnableAutoConfiguration制定的值,将这
些值作为自动配置导入导入到容器中自动配置的类就生效,帮助我们进行自动配置工作
注:以前都是手动配置

1.springboot:入门项目的更多相关文章

  1. SpringBoot入门项目CRM学习过程中的报错记录(更新ing)

    在用mybatis自动生成实体类和mapper时报错..... is unrecognized or represents more than one time zone. You must conf ...

  2. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  3. SpringBoot入门基础

    目录 SpringBoot入门 (一) HelloWorld. 2 一 什么是springboot 1 二 入门实例... 1 SpringBoot入门 (二) 属性文件读取... 16 一 自定义属 ...

  4. SpringBoot入门示例

    SpringBoot入门Demo SpringBoot可以说是Spring的简化版.配置简单.使用方便.主要有以下几种特点: 创建独立的Spring应用程序 嵌入的Tomcat,无需部署WAR文件 简 ...

  5. Spring全家桶系列–[SpringBoot入门到跑路]

    //本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...

  6. springboot入门之一:环境搭建(续)

    在上篇博客中从springboot的入门到运行一个springboot项目进行了简单讲述,详情请查看“springboot入门之一”.下面继续对springboot做讲述. 开发springboot测 ...

  7. SpringBoot入门(三)——入口类解析

    本文来自网易云社区 上一篇介绍了起步依赖,这篇我们先来看下SpringBoot项目是如何启动的. 入口类 再次观察工程的Maven配置文件,可以看到工程的默认打包方式是jar格式的. <pack ...

  8. SpringBoot入门(五)——自定义配置

    本文来自网易云社区 大部分比萨店也提供某种形式的自动配置.你可以点荤比萨.素比萨.香辣意大利比萨,或者是自动配置比萨中的极品--至尊比萨.在下单时,你并没有指定具体的辅料,你所点的比萨种类决定了所用的 ...

  9. SpringBoot入门(四)——自动配置

    本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...

随机推荐

  1. [转载]ZendStudio格式化html错位问题修正

    原文链接leeon.me ZendStudio提供的HTML编辑功能感觉很强大,有时候觉得比dw更加人性化,而且整合php在一个编辑器上编写前端会方便很多,以前每次通过zend格式化html代码都会奇 ...

  2. thinkjs crud练习

    今天看了下thinkjs(v2.1.7),做了一个简单的入门demo,基于mysql数据库增删改查,详细源码如下: 页面整体展示: 会员新增: 删除: 查询: 主页面: <!DOCTYPE ht ...

  3. C#在不同平台下DLL的引用问题

    缘起 很多时候,我们需要引用在不同平台下的DLL,32位(X86)和64位(X64).如果平台错误,在C#中会引发BadImageFormatException异常. 解决思路 我们同时不能添加不同平 ...

  4. <td>标签scope属性

    HTML <td> 标签的 scope 属性 HTML <td> 标签 实例 下面的例子把两个 th 元素标识为列的表头,把两个 td 元素标识为行的表头: <table ...

  5. 嵌套Golang对象的初始化

      比如有这样一个对象: type ProductConfig struct {     Site map[string]string } 对应的初始化可以如下写: var pc ProductCon ...

  6. 移动端开发:iOS与Android平台上问题列表

    要CSS伪类 :active 生效,只需要给 document 绑定 touchstart 或 touchend 事件 <style> a { color: #000; } a:activ ...

  7. <Android 应用 之路> MPAndroidChart~BarChart

    简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...

  8. asp.net怎么让某一页的 requestEncoding设置成utf-8

    web.config里是这样的 <globalization requestEncoding="gb2312" responseEncoding="gb2312&q ...

  9. 提升PPT制作效率和颜值

    [大咖分享]By汤帅,PPT定制师 网站有时比素材库更有效 学会多模板整合利用 网站推荐:花瓣,officeplus,演界网,pptstore 演讲提纲 思维导图听课笔记

  10. 动态注册broadcast的安全考虑

    一.android service通知activity更新方式有1. service 通过广播的形式发送broadcast,向这个activity的内部类发广播的消息来更新界面2. service直接 ...