@SpringBootApplication注解

news/2024/12/6 18:41:42/
 

 启动类的

@SpringBootApplication

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//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.beans.factory.support.BeanNameGenerator;
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 {@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 {};@AliasFor(annotation = ComponentScan.class,attribute = "nameGenerator")Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;@AliasFor(annotation = Configuration.class)boolean proxyBeanMethods() default true;
}

其中@SpringBootConfiguration

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//package org.springframework.boot;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Indexed;@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
@Indexed
public @interface SpringBootConfiguration {@AliasFor(annotation = Configuration.class)boolean proxyBeanMethods() default true;
}
@SpringBootConfiguration 之上有 @Configuration

所以加上@SpringBootApplication之后,会被当做配置类

--------------------------------------------------------------------------------

@Configuration

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//package org.springframework.context.annotation;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {@AliasFor(annotation = Component.class)String value() default "";boolean proxyBeanMethods() default true;
}
其上有@Component 注解,所以 有@Configuration注解的类会创建bean对象交由spring容器去管理
@AliasFor(annotation = Component.class
)
String value() default "";

@Configuration注解 的value属性之上有注解@AliasFor( annotation = Component.class )

在使用@Configuration(value="s"),该属性的值将传给@Component的value属性,相当于有了@Component(value='s')的效果

--------------------------------------------------------------------------------

@SpringBootApplication 之上的@EnableAutoConfiguration

开启自动配置


 

 

@SpringBootApplication 之上的 @ComponentScan 开启组件扫描

Spring 自动扫描指定的基础包以及其子包中的所有类,并将被带有特定注解标记的类自动注册到 Spring 上下文中成为一个 Bean(basePackages 未指定,默认扫描当前包及子包)

在@SpringBootApplication 中  其属性scanBasePackages 为@ComponentScan注解的 basePackages属性的别名,@SpringBootApplication(scanBasePackages=S) 就有@ComponentScan(basePackages=S)的效果

@AliasFor(annotation = ComponentScan.class,attribute = "basePackages"
)
String[] scanBasePackages() default {};


http://www.ppmy.cn/news/48465.html

相关文章

homebrew安装mysql

安装指定版本的软件 我们可以用版本号来安装指定版本的软件,例如: brew install mysql5.7这会安装MySQL 5.7版本。 查看软件Versions 我们可以用brew info命令查看一个软件的所有版本,例如: brew info mysql会显示MySQL所有可安装版本,然后选择想要的版本号安装。 升级软…

设计模式 -- 命令模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

【Leetcode -342. 4的幂 -344.反转字符串 -345.反转字符串中的元音字母】

Leetcode Leetcode -342. 4的幂Leetcode -344.反转字符串Leetcode -345.反转字符串中的元音字母 Leetcode -342. 4的幂 题目&#xff1a;给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false …

item_get-获得aliexpress商品详情API的调用参数说明

item_get-获得aliexpress商品详情 aliexpress.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;免&#xff09;&#xff08;测&#xff09;&#xff08;试&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&…

Android入门

一、Android系统架构 Android大致可以分为4层架构&#xff1a;Linux内核层、系统运行库层、应用框架层和应用层 1.1Linux内核层 Android系统是基于Linux内核的&#xff0c;这一层为Android设备的各种硬件提供了如显示、音频、照相机、蓝牙、Wi-Fi等底层的驱动。 1.2系统运行层…

ELK简介

ELK 1. ELK2. Elasticsearch&#xff08;ES&#xff09;3. Logstash4. Kibana5. Filebeat6. 缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09; 1. ELK ELK是三个开源软件的首字母缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们…

腾讯云COS+ElmentUI+SpringBoot视频上传功能实现

文章目录 第一步&#xff1a;选择合适的组件并整合到项目中第二步&#xff1a;前端校验第三步&#xff1a;绑定上传成功方法第四步&#xff1a;腾讯云cos后端接口配置 今天在做项目的时候需要完成一个视频上传的功能&#xff0c;这里做一个记录&#xff01; 第一步&#xff1a;…

MongoDB实现---事务机制

事务机制 原子性是MongoDB实现事务的难点&#xff0c;隔离性和持久性则是MongoDB事务机制的亮点 ACID支持&#xff1a;由于前面说过MongoDB是基于大数据、提供高度可扩展和高可用&#xff1b;所以其事务机制不仅仅是一般ACID还是结合了BASE理论下的ACID 原子性&#xff1a;保…