游龙战神|-启动流程,好程序员Java培训分享SpringBoot
好程序员Java培训分享SpringBoot-启动流程一、主程序入口类
Application.class
@SpringBootApplication
publicclassSpringbootExampleApplication{
publicstaticvoidmain(String[]args){
SpringApplication.run(SpringbootExampleApplication.class,args);
}
}
SpringApplication.run方法XxxApplication.class作为参数传入
注意:必须是一个使用@SpringBootApplication注解类当你注释掉该类的时候直接报错
二、@SpringBootApplication注解
概要
@SpringBootApplication注解是SpringBoot的核心注解 , 它是一个组合注解 , 它的主要作用是标注在某个类上 , 表示这是一个SpringBoot的配置类
等价于
@SpringBootApplication=(默认属性)@Configuration+@EnableAutoConfiguration+@ComponentScan 。
源码
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
//配置注解
@SpringBootConfiguration
//开启自动注解
@EnableAutoConfiguration
//类似于spring中的自动扫描包
@ComponentScan(excludeFilters={@Filter(type=FilterType.CUSTOM,classes=TypeExcludeFilter.class),
@Filter(type=FilterType.CUSTOM,classes=AutoConfigurationExcludeFilter.class)})
public@interfaceSpringBootApplication{
@AliasFor(annotation=EnableAutoConfiguration.class)
Class>[]exclude()default{};
@AliasFor(annotation=EnableAutoConfiguration.class)
String[]excludeName()default{};
@AliasFor(annotation=ComponentScan.class,attribute="basePackages")
String[]scanBasePackages()default{};
@AliasFor(annotation=ComponentScan.class,attribute="basePackageClasses")
Class>[]scanBasePackageClasses()default{};
}
说明
本身就是注解 , 提供了exclude()和excludeName()两个注解属性
@ComponentScan注解 , 同时是@ComponentScan注解的容器 。 我们发现scanBasePackages和scanBasePackageClasses两个注解属性上面同样声明了@AliasFor注解 , 分别指向了@ComponentScan注解的basePackages注解属性和basePackageClasses属性 。
声明了@EnableAutoConfiguration注解 , 表明声明了它的类本身会默认开启自动配置
声明了@Configuration注解 , 表明声明了它的类本身也是个配置类 。
三、@Configuration
说明
SpringBoot社区推荐使用基于JavaConfig的配置形式 , @Configuration表示一个IoC容器的配置类
配置方式的区别
表达形式
xml方式
xmlns:xsi=""
xsi:schemaLocation="
/spring-beans.xsd">
JavaConfig方式
@Configuration
publicclassDruidConfiguration{
}
【游龙战神|-启动流程,好程序员Java培训分享SpringBoot】注册Bean
xml形式注册
class="com.alibaba.druid.pool.DruidDataSource"/>
JavaConfig方式
@Configuration
publicclassDruidConfiguration{
publicDataSourcedruidDataSource(){
returnnewDruidDataSource();
}
}
依赖注入
xml形式注册
class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"/>
JavaConfig方式
@Configuration
publicclassShiroConfiguration{
- 三易生活|Note20系列即将国内亮相,三星启动先行者计划
- 科技快报网|全球布局循序渐进,粒子视界芜湖运营中心正式启动
- 游龙战神|喜欢vivo的不要错过哦,2020年vivo手机挑选攻略
- 每日科技果粉|Graph启动激励测试网,参与者有机会获Graph代币奖励,数据索引项目The
- 圈聊科技|高精度定位路测启动,将跑遍全国,7月31号北斗卫星全球组网完成
- 蓝点网|Windows与Linux系统均受影响,研究人员爆出安全启动功能高危漏洞
- 松鼠热点|合肥等全国87城小店联合支持消费券,全国“消费促进月”将启动
- 新湖南TB|“麓山杯”5G技术及应用大赛长沙启动
- 映维网|开启OpenXR标准的普及推广,Khronos启动“OpenXR兼容”认证
- 产业气象站|苏宁818启动:品牌战略升级、J-10%再扩大