Spring注解驱动(一)

本文介绍了如何在Spring框架中使用@Configuration注解创建配置类,@Bean用于注册Bean并指定ID,以及@ComponentScan注解的扫描规则。讲解了作用域设置和懒加载的概念,涉及XML配置与类注解的对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Configuration注解+@Bean给容器中注入组件

在maven项目中,定义一个Person实体类,配置beans.xml文件

<bean class="com.atguigu.pojo.Person" id="person">-->
    <property name="name" value="奥利给"/>-->
    <property name="age" value="100"/>-->
</bean>-->

定义一个类,头上加上@Configuration注解,目的就是相当于这个类是个配置类,等价于beans.xml文件,在配置类里面定义

// @Bean:给容器中注册一个Bean类型为返回值的类型,id默认是用方法名作为id
// name=“ ”  配置bean的名字,便于getBean()时直接用别名
@Bean(name = "personBeanName")
public Person person(){
    return new Person();
}

@ComponentScan注解是自动扫描组件,也可以指定扫描规则

  1. 配置xml文件解决:在beans.xml中配置
//use-default-filters 默认的扫描规则,true为开启,false为关闭
<context:component-scan base-package="com.atguigu" use-default-filters="false">
            <context:include-filter type="annotation" expression=""/>-->
            <context:exclude-filter type="annotation" expression=""/>-->
</context:component-scan>
  1. 配置类注解
  • excludeFilters[ ] 指定哪些类型不适合进行组件扫描
  • includeFilters[ ] 指定哪些类型适合进行组件扫描
  • useDefaultFilters 默认的扫描规则,true为开启,false为关闭
@Configuration
@ComponentScan(
        value = "com.atguigu",
        includeFilters = {
                @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class})
        },useDefaultFilters = false)
public class SpringConfig {

@Scope注解设置组件的作用域

在beans.xml中或者在配置类中配置该选项

常见的有4种作用域

  • prototype:多实例的,IOC容器启动并不会去调用方法创建对象放在容器中,每次获取的时候才会调用方法创建对象
  • singleton:单实例的(默认值),IOC容器启动时会调用方法创建对象放到IOC容器中,以后每次获取就是直接从容器中(map.get())去拿
  • request:同一个请求创建一个实例,
  • session:同一个session创建一个实例
懒加载
  1. 单实例bean:默认在容器启动的时候创建对象
  2. 懒加载:容器启动不创建对象,第一次使用(获取)Bean才会创建对象,并初始化

如:ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

当只有这一行代码时,并且没加懒加载的情况下,且在单实例作用域的情况下,在创建容器的时候顺便创建配置类中声明的@Bean对象。加了懒加载的情况下,在创建容器的时候不会创建对象,只有在getBean()的情况下才会创建对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值