SpringBoot学习笔记(一)SpringBootApplication启动_spring

 

 一.SpringBootApplication

@SpringBootApplication
public class DemoApplication{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
}
package org.springframework.boot.autoconfigure;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.TypeExcludeFilter;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {

@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan

二.@ComponentScan

   指定包扫描的根路径,扫描springFrameWork扫描指定包以及子包的组件

   (不指定:默认扫描当前配置类所在包以及自爆的所有组件---------SpringBoot的启动类要放到所有类所在包的最外层 )

二.  @Configuration

@Configuration
public class ConfigurationDemo{
@Bean
public Date currentDate(){
return new Date();
}
}

三.总结

  • @SpringBootApplication是组合注解
  • @ComponentScan默认扫描当前配置类所在包以及子包下的所有组件,exclude属性会将主启动类和自动配置类屏蔽掉
  • ​@Configuration​​​ 可标注配置类,​​@SpringBootConfiguration​​ 并没有对其做实质性扩展。