SpringBoot2.0.2 Application调用的三种方式
一、注解
@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/> <!– lookup parent from repository –>-->
<!--</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调用的三种方式的更多相关文章
- [OpenSource]浅谈.Net和Java互相调用的三种方式
在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份额,不管谁对谁错,Java和.Net是目前应用开发的两个 ...
- 浅谈.Net和Java互相调用的三种方式
在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份 额,不管谁对谁错,Java和.Net是目前应用开发的两 ...
- Struts2方法调用的三种方式(有新的!调用方法的说明)
在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="heroAction" class="com.ABC ...
- Struts2方法调用的三种方式
在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="student" class="com.itmyho ...
- 判断python对象是否可调用的三种方式及其区别
查找资料,基本上判断python对象是否为可调用的函数,有三种方法 使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))
1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- ORACLE SQL前端补0的三种方式。
前端补0的三种方式. select lpad(sal,8,'0') from emp;select to_char(sal,'00000000') from emp;select substr('00 ...
随机推荐
- 第五章 Inheritance继承
[继承] Java不支持多重继承 - 每个子类只有一个超类. 不是将成员变量声明为静态,更好的做法是将University实例化为对象,然后使用该对象访问其成员,如下所示: [抽象类] 可以包含或者不 ...
- C盘文件过大,C盘空间莫名丢失,pagefile.sys文件
设置显示隐藏文件和受保护的系统文件后此文件会显示pagefile.sys这个是window的页面文件,作为系统的虚拟内存使用,和你的物理内存一样大,你内存已经很大了,不用开虚拟内存了.在系统高级属性下 ...
- Volley框架原理
Volley有如下优点: 1. 自动调度网络请求 2. 多并发请求 (源于开了多个线程)3. 本地Cache自动缓存网络请求结果 4. 支持设置请求优先级 5. 支持取消单个请求或者取消所有请求 6. ...
- 点线特征双目视觉SLAM---暑期笔记
1.由于以后可能研究有关基于特征方面的SLAM研究,所以近期看了一篇文章[基于点线综合特征的双目视觉SLAM方法--谢晓佳],由于之前对SLAM的模块比较模糊,所以认真阅读了此论文,并对主要的3个线程 ...
- input,textarea在ios和Android上阴影和边框的处理方法(在移动端)
1.去掉ios上阴影的方法只需要在css文件上添加input,textarea{-webkit-appearance: none;}就可以了 2.在移动端上input和textarea边框问题,也是在 ...
- c#Loading 页SplashScreenManager的使用
一.新建一个加载界面: SplashScreenManager控件只是作为加载界面的统一管理器,我们要使用加载界面,需要自行创建加载界面,两种方法如下: 1.点击SplashScreenManager ...
- (转)android权限(permission)大全
文章转载自:http://blog.csdn.net/hai_qing_xu_kong/article/details/24265533 1.android.permission.WRITE_USER ...
- mybatis入门--mapper代理方式开发
不使用代理开发 之前,我们说了如何搭建mybatis框架以及我们使用mybatis进行简单的增删改查.现在,我们一起来构建一个dao层的完整代码.并用@test来模拟service层对dao层进行一下 ...
- iOS.CocoaPods.0
1. CocoaPods CocoaPods 是Objective-C (iOS and OS X) projects 的依赖管理器. A CocoaPod (singular) is a speci ...
- HDOJ2586 How far away ?
一道LCA模板 原题链接 \(LCA\)模板题,不解释. 倍增版 #include<cstdio> #include<cmath> #include<cstring> ...