SpringBoot2.0.2 Application调用的三种方式

一、注解

@SpringBootApplication

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

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

 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"
 3          xsi: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>

三、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
26     public Runnable createRunnable() {
27
28         return () -> {
29             System.out.println("Spring Boot is Run");
30         };
31
32     }
33
34     public static void main(String[] args) {
35         ConfigurableApplicationContext applicationContext = SpringApplication.run(QuickStartApplication.class,args);
36         applicationContext.getBean(Runnable.class).run();
37         System.out.println(applicationContext.getBean(User.class));
38     }
39 }

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

 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
22     public static void main(String[] args) {
23
24         // new实例对象调用
25        SpringApplication application = new SpringApplication();
26
27        // 可以指定多个源的方式
28        Set<String> sets = new HashSet<>();
29        sets.add(ApplicationDemo.class.getName());
30        sets.add(User.class.getName());
31        application.setSources(sets);
32
33
34
35         ConfigurableApplicationContext applicationContext = application.run(args);
36         applicationContext.getBean(Runnable.class).run();
37         System.out.println(applicationContext.getBean(User.class));
38     }
39
40
41 }

建立ApplicationDemo

 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
19     public Runnable createRunnable() {
20
21         return () -> {
22             System.out.println("Spring Boot is Run");
23         };
24
25     }
26 }

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

 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
23     public static void main(String[] args) {
24
25         //构造函数指定方式
26         SpringApplication application = new SpringApplication(ApplicationDemo.class,User.class);
27
28
29
30         ConfigurableApplicationContext applicationContext = application.run(args);
31         applicationContext.getBean(Runnable.class).run();
32         System.out.println(applicationContext.getBean(User.class));
33     }
34
35
36 }

源码地址:

https://github.com/liushaoye/quick_start

 

原文地址:https://www.cnblogs.com/liuyangfirst/p/9062346.html

时间: 2024-10-09 07:48:49

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

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

在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份额,不管谁对谁错,Java和.Net是目前应用开发的两个主要阵营,所以Java.和Net之间的整合是大型应用开发过程中经常会面临一个问题. 目前Java和.Net之间的整合主要有三种思路和做法(经过几天的查阅,目前我就看到了这三种方式,可能还有其他的方法): 1)基于通讯协议的整合 基于通讯协议的整合方式,最容易被人首先想到,简单的方式可以通过Web S

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

在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份 额,不管谁对谁错,Java和.Net是目前应用开发的两个主要阵营,所以Java.和Net之间的整合是大型应用开发过程中经常会面临一个问题. 目前Java和.Net之间的整合主要有三种思路和做法(经过几天的查阅,目前我就看到了这三种方式,可能还有其他的方法): 1)基于通讯协议的整合 基于通讯协议的整合方式,最容易被人首先想到,简单的方式可以通过Web

axis2 webservice 调用的三种方式

[java] view plaincopy package testClick.src.test; import javax.xml.namespace.QName; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; impo

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

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

Html5 页面中 JavaScript 启动调用的三种方法比较

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 首先,来看一下 Html5 页面引用 JavaScript 代码的几种方式: 1.Html5 页面中使用 <script>  标签容纳

(六)、获取Keystone token的三种方式

让我们粗略看一下,三种从Keystone获得token的方式.在尝试这三种方式之前,你得确保已经装好Keystone终端.如果还没有装好,可以看grizzly安装版本的Keystone 安装部分. Note:这些呼叫都将请求的是Keystone v2版本. 假定你已经安装好,并且Keystone已经跑起来了:).然后接下来我们首先要做的便是,发一个简单的cURL发送请求: $ curl -d '{"auth": {"tenantName": "demo&q

SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. Spring依赖注入(

Struts中的数据处理的三种方式

Struts中的数据处理的三种方式: public class DataAction extends ActionSupport{ @Override public String execute() throws Exception { // 1. 请求数据封装: 2. 调用Service处理业务逻辑,拿到结果数据 3. 数据保存到域中 /* * // Struts中对数据操作,方式1: 直接拿到ServletApi, 执行操作 HttpServletRequest request = Serv

[转]Asp.net Mvc2中重构View的三种方式

本文转自:http://www.cnblogs.com/zhuqil/archive/2010/07/14/asp-net-mvc2-view-refactoring.html 我们在Asp.net mvc的view开发过程中,如果不注意可能会写大量的重复的代码.这篇文章介绍3种方式重构View的代码,来减少View中的重复代码.    1.母板页 在Asp.net mvc中保留了母板页的使用,我们可以使用母板页对我们的站点进行布局.看下面母板页的代码: <%@ Master Language=