spring boot学习笔记三---探究Spring boot注解(未完待续)

Spring Boot 系列

入门hello world案列:
https://blog.csdn.net/weixin_43723712/article/details/84191811
pom.xml解析:
https://blog.csdn.net/weixin_43723712/article/details/84191882

@SpringBootApplication

@SpringBootApplication用于标识该类为Springboot的启动类,是由以下几个注解复合而成

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
//用于标识此类为springboot的配置类,作用等同与spring的@Configuration
@SpringBootConfiguration
//用于开启自动配置
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)

@EnableAutoConfiguration

@SpringBootApplication中的 @EnableAutoConfiguration由以下几个注解复合而成

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})

@AutoConfigurationPackage详解

@EnableAutoConfiguration注解中的@AutoConfigurationPackage注解中有@Import({Registrar.class})注解,该注解用于给容器中导入组件,即带有该注解会自动配置和Spring boot启动类相同包及其子包下的所有组件

Registrar.class中有如下方法(源码撑腰)

public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {}
//方法体中new AutoConfigurationPackages.PackageImport(metadata).getPackageName()得到的为com.zkq.springboot.study,com.zkq.springboot.study为Spring boot 启动器所在的包

@Import({AutoConfigurationImportSelector.class})

@EnableAutoConfiguration注解中的@Import({AutoConfigurationImportSelector.class})用于导入许多位于下面位置中的自动配置类

org/springframework/boot/spring-boot-autoconfigure/2.1.0.RELEASE/spring-boot-autoconfigure-2.1.0.RELEASE.jar!/META-INF/spring.factories.org.springframework.boot.autoconfigure.EnableAutoConfiguration

AutoConfigurationImportSelector.class有如下方法:

//selectImports会调用getAutoConfigurationEntry方法,返回包含自动配置类的String []
public String[] selectImports(AnnotationMetadata annotationMetadata) { }

//AutoConfigurationEntry 为AutoConfigurationImportSelector的静态内部类,getAutoConfigurationEntry方法会返回一个名为 configurations的 List,configurations包含了许多自动配置类的全路径
protected AutoConfigurationImportSelector.AutoConfigurationEntry getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata, AnnotationMetadata annotationMetadata){ }

@RestController

用于表明该类为一个controller且会返回json数据,其中包含Spring的@Controller和@ResponseBody两个注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody

@ConfigurationProperties(prefix = “指定配置文件中对应的名称”)与@Value("${person.user-name}")

@ConfigurationProperties()注解用在类上,用于将类中的属性和配置文件中的属性进行绑定,获取配置文件中值

@Value("")用在类中的字段上,获取配置文件中的值并向类中相应字段赋值

使用这两个注解需要在pom.xml中引入一下依赖,通过该依赖引入配置文件处理器


			org.springframework.boot
			spring-boot-configuration-processor
			true
		

spring boot学习笔记三---探究Spring boot注解(未完待续)_第1张图片
spring boot学习笔记三---探究Spring boot注解(未完待续)_第2张图片

@PropertySource(value={“classpath:”})

该注解用于指定类读取指定的配置文件,默认类读取application.yml配置文件

@ImportResource(locations = {""})(不推荐使用)

该注解配置在配置类上,用于加载Spring的配置文件,使其生效

@Bean+@Configuration添加组件(推荐)

@Bean
将方法的返回值作为一个组件添加到容器中,容器中组件的默认id为方法名

@Configuration
用于表明该类为一个配置类

实例:添加Druid组件
spring boot学习笔记三---探究Spring boot注解(未完待续)_第3张图片
spring boot学习笔记三---探究Spring boot注解(未完待续)_第4张图片

你可能感兴趣的:(java,spring,boot,java)