一、注解

@SpringBootApplication

           点开查看源码是由多个注解合成的注解,其中主要的注解有:
            @SpringBootConfiguration
            @EnableAutoConfiguration
            @ComponentScan

三个关键的注解:
             @ComponentScan 自动扫描加载进来的包,-----------可以扫描自动加载的bean
            @EnableAutoConfiguration 启动自动配置
           @SpringBootConfiguration 继承了@Configuration,所以可以使用@Configuration内容
          @Configuration是spring提供的注解,@SpringBootConfiguration是springboot提供的注解。效果几乎一样,用哪个看自己的习惯。
二、pom配置

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.springboot</groupId>
<artifactId>quick_start</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>quick_start</name>
<url>http://maven.apache.org</url>
<description>Demo project for Spring Boot</description> <!--<parent>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-parent</artifactId>-->
<!--<version>2.0.2.RELEASE</version>-->
<!--<relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
<!--</parent>--> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
</properties> <dependencies>
<!--不使用parent方式进行依赖,需要scope和type设置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.2.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

三、Application调用的三种方法

方法一:静态方法调用

 package com.springboot;

 import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; /******************************
* @Author : liuyang
* @ClassName : QuickStartApplication
* @Date : 2018 五月 20
* @Time : 01:05:59
* @Type : SpringBoot
* @Version : 1.0
* @Return :
* @Description :
*******************************/ @ComponentScan
@EnableAutoConfiguration
public class QuickStartApplication { @Bean
public Runnable createRunnable() { return () -> {
System.out.println("Spring Boot is Run");
}; } public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(QuickStartApplication.class,args);
applicationContext.getBean(Runnable.class).run();
System.out.println(applicationContext.getBean(User.class));
}
}

方法二:非态方法调用,可以拥有多个资源入口

 package com.springboot;

 import com.srpingboot.nostatic.ApplicationDemo;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext; import java.util.HashSet;
import java.util.Set; /**
* Created by
*
* @author: liuya
* @Date: 2018/5/20 2:18
* @Description: quick_start
* <p>
* 指定多个源,调用非springApplication方法
*/ public class ManyApplication { public static void main(String[] args) { // new实例对象调用
SpringApplication application = new SpringApplication(); // 可以指定多个源的方式
Set<String> sets = new HashSet<>();
sets.add(ApplicationDemo.class.getName());
sets.add(User.class.getName());
application.setSources(sets); ConfigurableApplicationContext applicationContext = application.run(args);
applicationContext.getBean(Runnable.class).run();
System.out.println(applicationContext.getBean(User.class));
} }

建立ApplicationDemo

 package com.srpingboot.nostatic;

 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; /**
* Created by
*
* @author: liuya
* @Date: 2018/5/20 2:23
* @Description: quick_start
*/
@ComponentScan
@EnableAutoConfiguration
public class ApplicationDemo { @Bean
public Runnable createRunnable() { return () -> {
System.out.println("Spring Boot is Run");
}; }
}

方法三 :构造函数指定方式

 package com.springboot;

 import com.srpingboot.nostatic.ApplicationDemo;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext; import java.util.HashSet;
import java.util.Set; /**
* Created by
*
* @author: liuya
* @Date: 2018/5/20 2:18
* @Description: quick_start
* <p>
* 指定多个源,调用非springApplication方法
*/ public class ManyApplication { public static void main(String[] args) { //构造函数指定方式
SpringApplication application = new SpringApplication(ApplicationDemo.class,User.class); ConfigurableApplicationContext applicationContext = application.run(args);
applicationContext.getBean(Runnable.class).run();
System.out.println(applicationContext.getBean(User.class));
} }

源码地址:

https://github.com/liushaoye/quick_start

 

SpringBoot2.0.2 Application调用的三种方式的更多相关文章

  1. [OpenSource]浅谈.Net和Java互相调用的三种方式

    在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份额,不管谁对谁错,Java和.Net是目前应用开发的两个 ...

  2. 浅谈.Net和Java互相调用的三种方式

    在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份 额,不管谁对谁错,Java和.Net是目前应用开发的两 ...

  3. Struts2方法调用的三种方式(有新的!调用方法的说明)

    在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="heroAction" class="com.ABC ...

  4. Struts2方法调用的三种方式

    在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="student" class="com.itmyho ...

  5. 判断python对象是否可调用的三种方式及其区别

    查找资料,基本上判断python对象是否为可调用的函数,有三种方法 使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False ...

  6. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  7. java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))

    1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...

  8. uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式

    前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...

  9. ORACLE SQL前端补0的三种方式。

    前端补0的三种方式. select lpad(sal,8,'0') from emp;select to_char(sal,'00000000') from emp;select substr('00 ...

随机推荐

  1. jmeter操作数据库,分布式,在Linux上运行

    jmeter操作数据库: 1.在测试计划中导入数据库jar包 2.添加链接数据库信息 3.mysql:jdc:mysql://192.168.1.116:3307/bugfree?allowMulti ...

  2. Linux配置Nginx负载均衡

    nginx配置负载均衡其实很简单,一直还以为负载均衡是个很高端人士玩的 首先先了解下负载均衡,假设一个场景,如果有1000个客户同时访问你服务器时,而你只有一台服务器的Nginx,且只有一个MySQL ...

  3. 快速排序中BUG int 与 int *

    #include <iostream>using namespace std;int QKPass(int* , int , int);  //若声明为 int QKPass(int, i ...

  4. javascript第一天知识点

    JS的数据类型: 数字  number 字符串 string 布尔 boolean 空值 null 未定义的 undefined 数组 Array 对象 Object 通过typeof() 可以查看对 ...

  5. 关于AndroidStudio的打包数字签名以及多渠道发布

    AndroidStudio右侧Gradle里边的build(工程下的)是可以生成未签名的debug和release的apk包生成前可以先clean一下工程 app下的build.gradle里边的 l ...

  6. (转)Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的类或则方法

      文章转自:http://blog.sina.com.cn/s/blog_52f623240102vpcr.html   在Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的 ...

  7. 右手坐标系下LookAt视图矩阵的推导

    基本知识 右手坐标系 右手手掌弯曲,手指方向由正X轴指向正Y轴,如果这时Z轴正方向与大拇指方向保持一致,坐标系为右手坐标系,否则为左手坐标系. 向量叉乘的方向 向量(1,0,0)与向量(0,1,0)叉 ...

  8. L1-033 出生年(15)(STL-set代码)

    L1-033 出生年(15 分) 以上是新浪微博中一奇葩贴:"我出生于1988年,直到25岁才遇到4个数字都不相同的年份."也就是说,直到2013年才达到"4个数字都不相 ...

  9. fis代码压缩

    Fis代码压缩步骤 1,安装fis(http://fis.baidu.com/fis3/docs/beginning/install.html) fis安装支持的node版本:0.8x,0.10x,0 ...

  10. 探索未知种族之osg类生物---器官初始化三

    当判断到viewer中没有一个graphicContext可用时,osg就会默认的进行一次对viewer的实现操作,这样可以保证osg以后可以安心的在屏幕上进行作画.那我们就来看看这个osgViewe ...