spring的注解开发中的常用注解(一)------@bean @Configuration @ComponentScan @Import @Scope @Lazy

公司项目开发中看到项目搭建时用到一些注解,现总结学习如下。

@Configuration

此注解说明为一个配置类,相当于一个xml配置文件,在springboot的开发中,有此注解的配置文件都会被扫描加入到ioc容器中。

@bean

相当于在xml文件中的<bean>标签,基本的写法如下

@Bean("alin")
public Person person(){
    return new Person("lisi", 20);
}

在bean后不加alin的时候,生成的对象的id为方法的名字,既person。当在bean后添加了alin之后,其相应的ID就变成了alin。因为默认的spring生成的对象都是单例的,所以当有多个bean被命名成alin之后,只有一个bean会被添加到ioc容器中,其他的同名的bean则无法加入到ioc容器中。

@ComponentScan

此注解相当于xml配置文件中的<context:component-scan >,指定扫描的包,会将具有(@Controller/@Service/@Repository/@Component)注解的组件注册到容器中,一般写成@componentScan(“www.puhuijia”)的形式,来指定需要扫描的组件位置。

注意,当使用springboot进行开发的时候,默认的spring会扫描mainApplication类同级及同级目录下的所有子包,当mainApplication在一个非常内部的包下是,相应的具有@configuration @Controller/@Service/@Repository/@Component的所有组件都不能被注册到容器中,这是就要在mainApplication上添加@compnonentscan注解,来指定扫描的根目录。

@Scope

调整作用域,来指定bean生成的对象是什么类型的。相应的取值如下

  • prototype:多实例的:ioc容器启动并不会去调用方法创建对象放在容器中。每次获取的时候才会调用方法创建对象。

  • singleton:单实例的(默认值):ioc容器启动会调用方法创建对象放到ioc容器中。以后每次获取就是直接从容器(map.get())中拿。

  • request:同一次请求创建一个实例。

  • session:同一个session创建一个实例。

默认是单例的,前两种常用一些。

@Lazy

懒加载,只有在创建单实例bean时才会生效,默认在容器启动的时候创建对象,添加了此注解后,容器启动不创建对象,而是在第一次使用(获取)Bean创建对象,并初始化。

@Import

快速给容器中导入一个组件

@Import(MainConfig2.class})

public class MainConfig1 {

MainConfig1 组件在注册之前会注册MainConfig2组件,创建其中的bean对象。

工作中遇到是在引入dubbo的时候,将服务提供方的接口的类对象返回方法写在MainConfig2中,然后在通过@improt引入进来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值