温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spring Boot核心的注解是什么

发布时间:2021-10-25 16:17:40 来源:亿速云 阅读:171 作者:iii 栏目:开发技术

这篇文章主要讲解了“Spring Boot核心的注解是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot核心的注解是什么”吧!

Configuration

在Spring4以后,官方推荐使用 Java Config 来代替 Application.xml 声明将Bean交给容器管理。在Spring Boot  中,Java Config 使用完全代替了application.xml 实现了xml的零配置, 开下面这个例子

实例

创建一个bean类

public class SomeBean {     public void doWork() {         System.out.println("do work...");     } }

其中,dowork是逻辑方法 再创建一个Config类

@Configuration public class Config {     @Bean     public SomeBean someBean() {         return new SomeBean();     } }

在这里,在Config类上添加了一个@configuration注解,可以理解为Spring中的配置类,其返回值为someBean,someBean方法上也添加了一个@bean注解,其返回对象也将会交由Spring容器进行管理。

简单测试

public class Test {     public static void main(String[] args) {         ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);         SomeBean sb = context.getBean(SomeBean.class);         sb.doWork();     } }

这里,创建了一个AnnotationConfigApplicationContext对象,传入了Config.class  后,得到了someBean对象。

do work...

扩展

一般的,一个完整的bean需要包括,id,class,initMethod,destroyMethod,·ref,scope。所以这里使用 Java  Config 进行相关的配置这些属性。修改第一个例子代码

public class SomeBean {      private void init() {         System.out.println("init...");     }      public void doWork() {         System.out.println("do work...");     }      private void destroy() {         System.out.println("destroy...");     }  }

增加,init,destroy方法

@Configuration public class Config {      @Bean(initMethod = "init",destroyMethod = "destroy")     public SomeBean someBean() {         return new SomeBean();     } }

在bean注解上,属性指向对应的方法。

public class Test {     public static void main(String[] args) {         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);         SomeBean sb1 = context.getBean(SomeBean.class);         System.out.println(sb1);          SomeBean sb2 = context.getBean(SomeBean.class);         System.out.println(sb2);         context.close();     } }

输出结果为

init... com.spring.SomeBean@16022d9d com.spring.SomeBean@16022d9d destroy...

这样就完成了一个配置的生命周期。

@ComponentScan

@ComponentScan注解,用于类或接口上主要指定的扫描路径,Spring会把指定路径下带有指定注解的类自动装配到bean容器里,会被自动装配的注解包括@Controller,@Service,@Component,@Repository等。其作用相当于,

<context:component-scan base-package=”com.maple.learn” />

配置。

基本使用

常用的属性如下  basePackages,value,指定扫描路径,如果为空,则以@ComponentScan注解的类所在的包扫描路径。basePackageClasses:指定具体扫描的类  includeFilters:指定满足Filter条件的类 excludeFilters:指定排除Filter条件的类  includeFilters和excludeFilters 的FilterType可选:ANNOTATION=注解类型  默认、ASSIGNABLE_TYPE(指定固定类)、ASPECTJ(ASPECTJ类型)、REGEX(正则表达式)、CUSTOM(自定义类型),自定义的Filter需要实现TypeFilter接口  @ComponentScan的常见的配置如下:

@ComponentScan(value="com.maple.learn",    excludeFilters = {@ComponentScan.Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class)},    includeFilters = {@ComponentScan.Filter(type=FilterType.ANNOTATION,classes={Controller.class})}         ) public class SampleClass{    &hellip;&hellip; }

@EnableAutoConfiguration

其注解是一个组合注解, 其源码如下

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration {      String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";      Class<?>[] exclude() default {};          String[] excludeName() default {};  }

其中最重要的是@Import(AutoConfigurationImportSelector.class)注解,借助AutoConfigurationImportSelector,@EnableAutoConfiguration  帮助Spring Boot 应用将所有符合条件的@Configuration 配置加载到IOC容器中,而最主要的还需要借助于 Spring  框架的一个工具类,SpringFactoriestLoader  将META-INF/spring.factories加载配置,spring.factories文件是一个典型的properties配置文件,配置格式为key=value形式,不过key和value都是完整的类名,例如

org.springframework.data.repository.core.support.RepositoryFactorySupport=org.springframework.data.jpa.repository.support.JpaRepositoryFactory

感谢各位的阅读,以上就是“Spring Boot核心的注解是什么”的内容了,经过本文的学习后,相信大家对Spring Boot核心的注解是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI