SpringBoot2.0.2 Application调用的三种方式

黄沙百战穿金甲,不破楼兰终不还。这篇文章主要讲述SpringBoot2.0.2 Application调用的三种方式相关的知识,希望能为你提供帮助。
一、注解
            @SpringBootApplication
            点开查看源码是由多个注解合成的注解,其中主要的注解有:
            @SpringBootConfiguration
            @EnableAutoConfiguration
            @ComponentScan


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

SpringBoot2.0.2 Application调用的三种方式

文章图片
SpringBoot2.0.2 Application调用的三种方式

文章图片
1 < ?xml version="1.0" encoding="UTF-8"?> 2 < project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4< modelVersion> 4.0.0< /modelVersion> 5 6< groupId> com.springboot< /groupId> 7< artifactId> quick_start< /artifactId> 8< version> 0.0.1-SNAPSHOT< /version> 9< packaging> jar< /packaging> 10 11< name> quick_start< /name> 12< url> http://maven.apache.org< /url> 13< description> Demo project for Spring Boot< /description> 14 15< !--< parent> --> 16< !--< groupId> org.springframework.boot< /groupId> --> 17< !--< artifactId> spring-boot-starter-parent< /artifactId> --> 18< !--< version> 2.0.2.RELEASE< /version> --> 19< !--< relativePath/> & lt; !& ndash; lookup parent from repository & ndash; & gt; --> 20< !--< /parent> --> 21 22< properties> 23< project.build.sourceEncoding> UTF-8< /project.build.sourceEncoding> 24< project.reporting.outputEncoding> UTF-8< /project.reporting.outputEncoding> 25< maven.compiler.source> 1.8< /maven.compiler.source> 26< maven.compiler.target> 1.8< /maven.compiler.target> 27< java.version> 1.8< /java.version> 28< /properties> 29 30< dependencies> 31< !--不使用parent方式进行依赖,需要scope和type设置--> 32< dependency> 33< groupId> org.springframework.boot< /groupId> 34< artifactId> spring-boot-dependencies< /artifactId> 35< version> 2.0.2.RELEASE< /version> 36< scope> import< /scope> 37< type> pom< /type> 38< /dependency> 39 40 41< dependency> 42< groupId> org.springframework.boot< /groupId> 43< artifactId> spring-boot-starter-web< /artifactId> 44< /dependency> 45 46< dependency> 47< groupId> org.springframework.boot< /groupId> 48< artifactId> spring-boot-starter-test< /artifactId> 49< scope> test< /scope> 50< /dependency> 51< /dependencies> 52 53< build> 54< plugins> 55< plugin> 56< groupId> org.springframework.boot< /groupId> 57< artifactId> spring-boot-maven-plugin< /artifactId> 58< /plugin> 59< /plugins> 60< /build> 61 62 63 < /project>

View Code【SpringBoot2.0.2 Application调用的三种方式】三、Application调用的三种方法
      方法一:静态方法调用

SpringBoot2.0.2 Application调用的三种方式

文章图片
SpringBoot2.0.2 Application调用的三种方式

文章图片
1 package com.springboot; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 5 import org.springframework.boot.autoconfigure.SpringBootApplication; 6 import org.springframework.context.ConfigurableApplicationContext; 7 import org.springframework.context.annotation.Bean; 8 import org.springframework.context.annotation.ComponentScan; 9 10 /****************************** 11* @Author : liuyang 12* @ClassName : QuickStartApplication 13* @Date : 2018 五月20 14* @Time : 01:05:59 15* @Type : SpringBoot 16* @Version : 1.0 17* @Return : 18* @Description : 19*******************************/ 20 21 @ComponentScan 22 @EnableAutoConfiguration 23 public class QuickStartApplication { 24 25@Bean 26public Runnable createRunnable() { 27 28return () -> { 29System.out.println("Spring Boot is Run"); 30}; 31 32} 33 34public static void main(String[] args) { 35ConfigurableApplicationContext applicationContext = SpringApplication.run(QuickStartApplication.class,args); 36applicationContext.getBean(Runnable.class).run(); 37System.out.println(applicationContext.getBean(User.class)); 38} 39 }

View Code        方法二:非态方法调用,可以拥有多个资源入口
SpringBoot2.0.2 Application调用的三种方式

文章图片
SpringBoot2.0.2 Application调用的三种方式

文章图片
1 package com.springboot; 2 3 import com.srpingboot.nostatic.ApplicationDemo; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.context.ConfigurableApplicationContext; 6 7 import java.util.HashSet; 8 import java.util.Set; 9 10 /** 11* Created by 12* 13* @author: liuya 14* @Date: 2018/5/20 2:18 15* @Description: quick_start 16* < p> 17* 指定多个源,调用非springApplication方法 18*/ 19 20 public class ManyApplication { 21 22public static void main(String[] args) { 23 24// new实例对象调用 25SpringApplication application = new SpringApplication(); 26 27// 可以指定多个源的方式 28Set< String> sets = new HashSet< > (); 29sets.add(ApplicationDemo.class.getName()); 30sets.add(User.class.getName()); 31application.setSources(sets); 32 33 34 35ConfigurableApplicationContext applicationContext = application.run(args); 36applicationContext.getBean(Runnable.class).run(); 37System.out.println(applicationContext.getBean(User.class)); 38} 39 40 41 }

View Code          建立ApplicationDemo
SpringBoot2.0.2 Application调用的三种方式

文章图片
SpringBoot2.0.2 Application调用的三种方式

文章图片
1 package com.srpingboot.nostatic; 2 3 import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 4 import org.springframework.context.annotation.Bean; 5 import org.springframework.context.annotation.ComponentScan; 6 7 /** 8* Created by 9* 10* @author: liuya 11* @Date: 2018/5/20 2:23 12* @Description: quick_start 13*/ 14 @ComponentScan 15 @EnableAutoConfiguration 16 public class ApplicationDemo { 17 18@Bean 19public Runnable createRunnable() { 20 21return () -> { 22System.out.println("Spring Boot is Run"); 23}; 24 25} 26 }

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

SpringBoot2.0.2 Application调用的三种方式

文章图片
SpringBoot2.0.2 Application调用的三种方式

文章图片
1 package com.springboot; 2 3 import com.srpingboot.nostatic.ApplicationDemo; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.context.ConfigurableApplicationContext; 6 7 import java.util.HashSet; 8 import java.util.Set; 9 10 /** 11* Created by 12* 13* @author: liuya 14* @Date: 2018/5/20 2:18 15* @Description: quick_start 16* < p> 17* 指定多个源,调用非springApplication方法 18*/ 19 20 21 public class ManyApplication { 22 23public static void main(String[] args) { 24 25//构造函数指定方式 26SpringApplication application = new SpringApplication(ApplicationDemo.class,User.class); 27 28 29 30ConfigurableApplicationContext applicationContext = application.run(args); 31applicationContext.getBean(Runnable.class).run(); 32System.out.println(applicationContext.getBean(User.class)); 33} 34 35 36 }

View Code         
  源码地址:
              https://github.com/liushaoye/quick_start
 
















    推荐阅读