游龙战神|-启动流程,好程序员Java培训分享SpringBoot

好程序员Java培训分享SpringBoot-启动流程一、主程序入口类
Application.class
@SpringBootApplication
publicclassSpringbootExampleApplication{
publicstaticvoidmain(String[]args){
SpringApplication.run(SpringbootExampleApplication.class,args);
}
}
该类使用了@SpringBootApplication修饰
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{


推荐阅读