Hi !我是小小,开始本周的第一篇,本周第一篇内容是关于Spring Boot 最核心的三个注解,将会对这三个注解进行详细解释。

前言

Spring Boot 最大的特点是无需 XML 配置文件,能够实现自动装配,并进行全自动化的jar包配置。Spring Boot 是微服务的核心,其Spring Cloud 是基于Spring Boot 为基础的。其框架是用来简化Spring应用的初始搭建和开发过程,即,简化了框架,便捷了开发。下面开始介绍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 {@Beanpublic 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{……
}

@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

关于作者

我是小小,今天的内容结束了,欢迎下期再来。

推荐阅读

● 历史 | FireFox 是如何从辉煌走向衰落的

● 大话 | 大话程序猿眼里最全的高并发,快收藏!

● 送书 | 拿到就是赚到!

● 惊呆了! | Spring Boot 使用 @Value 读取配置还能这样用

● 神奇 | 神奇,原来 Linux 终端下还有这两种下载文件方式

给我个好看再走好吗?

详解 | Spring Boot 最核心的 3 个注解详解相关推荐

  1. Spring Boot 最核心的 3 个注解详解

    最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过. 然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失 ...

  2. 详解 :Spring Boot 最核心的 3 个注解

    作者 | 小明菜市场 来源 | 小明菜市场(ID:fileGeek) 头图 |  CSDN 下载自东方IC 前言 Spring Boot 最大的特点是无需 XML 配置文件,能够实现自动装配,并进行全 ...

  3. 盘点Spring Boot最核心的27个注解

    Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringClo ...

  4. 详解Spring Boot框架中的@Conditional系列注解

    目录 1. @Conditional 注解 2. Spring boot 扩展 1) @ConditionalOnClass和@ConditionalOnMissingClass注解 2) @Cond ...

  5. Spring Boot 2.x基础教程:配置文件详解

    在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring Boot给我们带来的诸多优点,我们用非常少的代码量就成功的实现了一个Web应用,这是传统的Spring应 ...

  6. Java开发的Spring Boot的核心模块

    Spring Boot 的核心模块 下面我们大概来了解一下 Spring Boot 的核心模块. 1.spring-boot 这是 Spring Boot 的主模块,也是支持其他模块的核心模块,主要包 ...

  7. 超全、超详的Spring Boot配置讲解笔记

    超全.超详的Spring Boot配置讲解笔记 springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改. application.prop ...

  8. SpringBoot2.1.5(45)--- Spring Boot的核心模块

    学习 Spring Boot 必须得了解它的核心模块,和 Spring 框架一样,Spring Boot 也是一个庞大的项目,也是由许多核心子模块组成的.Spring Boot 的核心模块 下面我们大 ...

  9. Spring 和 Spring Boot 最核心的 3 大区别,详解!

    概述 对于Spring和SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习SpringBoot的我当时也是一头雾水,随着经验的积累.我慢慢理解了这两个框架到底有什么区别,相信对于用了 ...

最新文章

  1. WINCE6.0远程桌面显示修改
  2. 计算python执行时间
  3. 字节跳动python面试题_字节跳动2019两道春招笔试题python解法
  4. shell 查出文件并复制到另一个文件夹
  5. 2457: 很简单的一道题
  6. 用delphi模仿.net的string.split
  7. 何时在脚本标记中需要CDATA节?
  8. 修复Windows10系统的注册表?
  9. 黑客帝国代码雨的实现
  10. 二氧化硫填料吸收塔实验装置QY-HJGC06
  11. 论文笔记:Geneva、Themis、SymTCP、TCP-Fuzz
  12. 常识介绍---什么是rss
  13. 罗升阳对安卓2.3系统的总结
  14. Java-Email
  15. Greenplum6 JDBC insert性能媲美MySQL
  16. python web前端后端页面详解
  17. 某小学把10对双胞胎放一个班
  18. 愚人节这天,我辞职了
  19. 科创板一年突破1.7万亿的最全真相 | 钛媒体封面特刊
  20. matlab脚本页怎么还原,当前的页面脚本发生错误matlab

热门文章

  1. css中字间距调整(转)
  2. 用ghost备份和还原Linux系统
  3. canvas的基本应用
  4. Stack Overflow: The Architecture - 2016 Edition(Translation)
  5. 知识选择visual studio 2012 知识笔记
  6. 股市心态决定成败:不贪不惧不急不赌
  7. 高性能队列--Disruptor
  8. Java集合系列---ConcurrentHashMap源码解析
  9. 使用计算机正确开机方法,电脑开关机的正确步骤
  10. 电子商务c语言实训报告,中南民族大学电子商务C语言实验报告.doc