spring学习日记-day4-基于java的容器装配

一、搭建测试环境

在上一篇博客的基础上搭建测试环境:

实体类

@Component
public class user {
    @Value("lzh")
    private String name;
    @Value("20")
    private int age;

    public user() {
    }

    public user(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "user{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

配置类

@Configuration
public class javaConfig1 {
    @Bean
    public user users(){
        return new user();
    }
}

二、基于java进行配置

1.@Bean 和 @Configuration的基本概念

  @Bean 注解用来表示一个方法实例化、配置和初始化了一个新的对象,由Spring IoC容器管理。此外,@Bean 注解的作用与 <bean/> 元素的作用相同。你可以在任何Spring @Component 中使用 @Bean 注解的方法。然而,它们最常被用于 @Configuration Bean。

         @Configuration 来注解一个类,表明它的主要目的是作为Bean定义的来源。此外, @Configuration 类允许通过调用同一个类中的其他 @Bean 方法来定义bean间的依赖关系。

2.@component

   @Component用于标记在类上,表明这个类是一个 Spring 组件,Spring 容器会扫描到这些注解并自动将这些类注册为 Spring 应用上下文中的 bean。@Component 注解的类默认是单例的,但可以通过 @Scope 注解来改变其作用域。

        三个衍生注解:它们都是 @Component 的特化形式,用于更清晰地表示组件的角色

3.@Bean

@Bean 注解主要用于在 Java 配置类中声明一个 bean,并将其注册到 Spring 的应用上下文中。当一个 Java 配置类被解析时,需要调用被 @Bean 注解标记的方法,并将该方法的返回值作为一个 bean 实例放入 Spring 容器中,由 Spring 容器来管理这个 bean。

1.声明一个bean

@Configuration
public class javaConfig1 {
    @Bean
    public user users(){
        return new user();
    }
}

        与xml相对应,users 为 标签中的 id 属性,user则为 class属性

2.其它用法    

指定 bean 名称:可以使用 @Bean 注解的 name 属性来指定 bean 的名称。

条件化 bean 创建:结合 @Conditional 注解(或其派生注解,如 @ConditionalOnMissingBean)来实现基于条件的 bean 创建。

依赖注入@Bean 方法可以像普通 Java 方法一样接收参数,Spring 会自动注入这些参数,从而支持复杂的依赖关系。

初始化方法和销毁方法:可以通过 @Bean 注解的 initMethod 和 destroyMethod 属性来指定 bean 的初始化和销毁方法,但更推荐使用 @PostConstruct 和 @PreDestroy 注解。

4.@Configuration

   @Configuration 用于指示一个类声明了多个 @Bean 方法,并且这个类可以被 Spring 容器作为 Bean 定义的源来处理。@Configuration 注解告诉 Spring 这个类包含了 Spring 容器管理的 bean 的声明。

5.测试

 @Test
    public void test2() {
        ApplicationContext applicationContext =
                new AnnotationConfigApplicationContext(javaConfig1.class);
        user user = (user) applicationContext.getBean("users");
        System.out.println(user.toString());
    }

6..@import导入其它配置类

新建一个配置类

public class javaConfig2 {
    @Bean
    public user user2(){
        return new user();
    }
}

修改

@Configuration
@Import(javaConfig2.class)
public class javaConfig1 {
    @Bean
    public user users(){
        return new user();
    }
}

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值