Springboot中定义bean常用到9中注解,分别是:@Bean、@Component、@Controller(@ControllerAdvice)、@RestController(@RestControllerAdvice)、@Service、@Repository、@Configuration、@Import、@BeanDefinition
1.第一类最常用的注解
@Bean
@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑,并且实例名就是方法名。
@Component
注解表明这个类会作为组件类,并告知Spring IOC容器要为这个类创建bean。
2.第二类表示业务逻辑常用的注解
@Controller @Controller是表示层(spring-MVC)的@Controller类型。表示控制器,俗称接口层。
@Service Service是服务层的@Service类型。表示业务层。
@Repository @Repository是持久层的@Repositor类型。通常结合SpringDataJpa使用表示持久层,等同于Mybatis的Mapper层。
3.第三类配置常用注解
@Configuration 标记类作为配置类 替换了applicatoinContext.xml配置文件。期作用实相当于原来的声明了多个bean的xml配置文件,而且被@Configuration也相当于一个组件。
4.第四类不常使用的注解
@Import
@Import注解的作用是用来导入配置类或者一些需要前置加载的类。比如我们熟悉的:@EnableAsync 、@EnableCaching、@EnableScheduling等等统一采用的都是借助@Import注解来实现的。
@BeanDefinition是所有bean的底层实现。Spring 将管理的对象称之为 Bean,容器会先实例化 Bean,然后自动注入,实例化的过程就需要依赖 BeanDefinition。BeanDefinition 用于保存 Bean 的相关信息,包括属性、构造方法参数、依赖的 Bean 名称及是否单例、延迟加载等,它是实例化 Bean 的原材料,Spring 就是根据 BeanDefinition 中的信息实例化 Bean。