0
点赞
收藏
分享

微信扫一扫

Spring5配置组件介绍

Ewall_熊猫 2022-01-10 阅读 68

目录

1.@Configuration

2.@ComponentScan

 3.@Scope

4.@Lazy

5.@Conditional

6.@Import

7.给Ioc容器注册Bean的方式

8.生命周期控制 


1.@Configuration

说明:把一个类作为一个loC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

代码演示:

Student实体类

@Data
public class Student {
    private String name;
    private Integer age;
    public Student() {

    }

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

 @Configuration注解使用

@Configuration
public class MyConfigura {

    //默认是方法名
    //指定value 则以value为准
    @Bean("stu")
    public Student student() {
        return new Student("ws", 18); 
    }

}

Test:

    @Test
    public void Test1() {
        ApplicationContext app = new AnnotationConfigApplicationContext(MyConfigura.class);

//        Object bean = app.getBean(Student.class);
        Object bean = app.getBean("stu");
        System.out.println(bean);
    }

2.@ComponentScan

说明:在配置类上添加@ComponentScan注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的<context:component-scan>

默认扫描(@Controller、@Service、@Repostory、@Component)

@ComponentScan的重要属性:

代码演示:

配置类:

@Configuration
@ComponentScan(value = "com.ws.project" )

public class MyConf {
}

Test:

@Test
    public void Test2() {
        ApplicationContext app = new AnnotationConfigApplicationContext(MyConf.class);

        String[] beanDefinitionNames = app.getBeanDefinitionNames();
        System.out.println(Arrays.toString(beanDefinitionNames));

    }

 3.@Scope

说明:用于指定scope作用域的(用在类上)

Scope的value属性:

  • prototype原型,多例
  • singleton单例
  • request主要应用于web模块同一次请求只创建一个实例
  • session主要应用于web模块,同一个session只创建一个对象

默认是单例

4.@Lazy

说明:表示延迟初始化(就是只有当我们调用bean的时候,这个bean才会被初始化)

@Lazy只对单例bean起作用

5.@Conditional

说明:Spring4开始提供,它的作用是按照一定的条件进行判断,满足条件给容器注册Bean。

属性是实现了Conditional接口的类

6.@Import

说明:导入外部资源

可以手动的把一个类加入到容器中

  • a.Import直接参数导入
  • b.实现工mportselector自定义规则实现
  • c.实现ImportBeanDefinitionRegistrar,获得BeanDefinitionRegistry可以手动直接往Ioc容器中塞

import加入的bean是全类名

7.给Ioc容器注册Bean的方式

  • @Bean直接导入单个类
  • @ComponentScan 默认扫描(@Controller.@Service、@Repostory、@Component)
  • @Import快速给容器导入Bean的方式
  • FactoryBean把需要注册的对象封装为FactoryBean

FactoryBean负责将Bean注册到IoC的

BeanBeanFactory 是从IoC容器中获得Bean对象的

8.Bean生命周期控制 

@PostConstruct用于指定初始化方法(用在方法上)

@PreDestory用于指定销毁方法(用在方法上)

@DependsOn :定义Bean初始化及销毁时的顺序

Bean生命周期的监控实现方式

  1. 配置@Bean的参数
  2. 分别实现InitializingBean和DisposableBean接口
  3. 使用@PostConstruct和@PreDestroy注解
  4. 自己写一个类,实现BeanPostProcessor接口(这种方式可以获取所有的bean)
举报

相关推荐

Spring5详解

Spring5框架

Spring5(下)

Spring5——事务

Spring5:AOP

Spring5学习笔记

0 条评论