好程序员Java培训分享SpringBoot -启动流程

200 篇文章 0 订阅
101 篇文章 0 订阅

好程序员Java培训分享SpringBoot -启动流程一、主程序入口类
Application.class
@SpringBootApplication
public class SpringbootExampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootExampleApplication.class, args);
}
}
特点
该类使用了@SpringBootApplication修饰
SpringApplication.run方法XxxApplication.class作为参数传入
注意: 必须是一个使用@SpringBootApplication注解类 当你注释掉该类的时候直接报错

二、@SpringBootApplication注解
概要
@SpringBootApplication注解是Spring Boot的核心注解,它是一个组合注解,它的主要作用是标注在某个类上,表示这是一个Spring Boot的配置类

等价于

@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 @interface SpringBootApplication {

@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方式

<?xml version="1.0" encoding="UTF-8"?>



JavaConfig方式

@Configuration
public class DruidConfiguration{

}
注册Bean
xml形式注册


JavaConfig方式

@Configuration
public class DruidConfiguration{
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
依赖注入
xml形式注册





JavaConfig方式

@Configuration
public class ShiroConfiguration {
@Bean
public SecurityManager securityManager() {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setCacheManager(cacheManager);
return securityManager;
}

@Bean
public RedisCacheManager cacheManager(CustomRedisManager redisManager) {
    RedisCacheManager redisCacheManager = new RedisCacheManager();
    redisCacheManager.setRedisManager(redisManager);
    return redisCacheManager;
}

}
总结
@Configuration一定要配合@Bean。用来替换xml配置文件
@Bean注解告诉Spring,带有@Bean的注解方法将返回一个对象
四、@ComponentScan
作用
@ComponentScan对应XML配置中的元素@ComponentScan的功能其实就是自动扫描并加载符合条件的组件

我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值