SpringBoot的启动类详情
1.⾸先来看⼀下启动类都包含的内容再来⼀⼀解释。
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }, scanBasePackages = { "com.hskc.base.*", "ls.*",
"com.integration.security.*" })
@EnableConfigurationProperties
@EnableTransactionManagement
@EnableAutoConfiguration
public class IntegrationSecurityApplication {
public static void main(String[] args) {
SpringApplication.run(IntegrationSecurityApplication.class, args);
}
}
2.⾸先看到的是@SpringBootApplication,这个注解经常被使⽤,其实@SpringBootApplication中包含着@SpringBootConfiguration ,@EnableAutoConfiguration ,@ComponentScan这三个注解,这⼀个注解就代替了这三个注解。springboot框架的作用
2.1 @ComponentScan
使⽤Spring框架的都知道,Spring⾥⾯有四⼤注解:
@Service ,@Repository,@Component,@Controller⽤来定义⼀个bean,@ComponentScan的作⽤就是⾃动扫描被这些注解标识的类,最终⽣成IOC容器⾥⾯的bean,可以通过设置@ComponentScan basePackages,includeFilters,excludeFilters属性来动态确定⾃动扫描范围,默认情况下:它扫描所有的类型,并且扫描范围是@ComponentScan注解所在的配置类包及⼦包的类。
上⾯的启动类中的scanBasePackages 就是指定默认扫描的包。
2.2@SpringBootConfiguration
这个注解的作⽤与@Configuration的作⽤相同,都是⽤来声明当前类是⼀个配置类,可以通过@bean注解⽣成IOC容器管理的bean,并在controller中注⼊使⽤。
2.3@EnableAutoConfiguration
@EnableAutoConfiguration是SpringBoot实现⾃动化配置的核⼼注解,通过这个注解把spring应⽤的所需bean注⼊容器
中,@EnableAutoConfiguration
源码⽤过@Import注⼊了⼀个ImportSelector的实现类AutoConfigurationImportSelector,这个ImportSelector最终实现根据我们的配置,动态加载所需的bean。
上⾯的启动类中@SpringBootApplication注解后⾯的exclude是这个注解的属性,其中DataSourceAutoConfiguration.class的意思是取消数据库配置,这是因为SpringBoot默认会⾃动配置数据库,如果业务不需要,就要⼿动的禁⽤数据库⾃动配置。否则就会报错。
3. @EnableConfigurationProperties,springboot提供该注解将配置⽂件的值映射到类上使⽤,下⾯演⽰⼀个例⼦。
3.1 这是我们在l配置的连接池学习。
3.2 通过@ConfigurationProperties注解则会将该值映射到该类中。
3.3 通过@Autowired标签即可访问到该对象,不过在使⽤类上⾯增加注解@EnableConfigurationProperties(DruidDataSourceProperties.class)
4.@EnableTransactionManagement这个注解的作⽤是启动事务,⾸先使⽤@EnableTransactionManagement开启事务之后,在访问数据库的service⽅法上添加注解@Transactional即可实现事务,等同于xml配置⽅式的 <tx:annotation-driven />
在Service上,被@Transactional注解的⽅法,将⽀持事务,如果注解在类上,那么整个类的所有⽅法都默认⽀持事务。
5.SpringApplication.run(IntegrationSecurityApplication.class, args);
class类执⾏⾯⽅法,main⽅法调⽤了SpringApplication的run⽅法。
run⽅法⼲了两个事情:
1.创建SpringApplication对象。
2.利⽤创建好的SpringApplication对象调⽤run⽅法。
创建SpringApplication对象:
在执⾏SpringApplication的run⽅法时⾸先会创建⼀个SpringApplication类的对象,利⽤构造⽅法创建SpringApplication对象时会调⽤initialize⽅法。
SpringApplication.run⼀共做了两件事情:
1.创建SpringApplication对象;在初始化时保存事件,容器初始化类以及判断是否为web应⽤,保存包含main⽅法的主配置类。
2.调⽤run⽅法:准备Spring的上下⽂,完成容器的初始化,创建,加载等,会在不同的时机触发的不同事件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论