萤火小屋

优律的知识库

  • 首页
  • 归档
  • 分类
  • 标签
  • 留言
  • 关于

  • 搜索
消息队列 RabbitMQ Redis 双指针 力扣 动态代理 Git YAML SpringBoot SpringMVC 回溯算法 分治算法 归并排序 快排 手撕 事务 MySQL索引 MySQL 小技巧 Spring Framework Spring 动态规划 Linux Android 贪心算法 操作系统 进程调度模拟 IPv6 数据库 计算机组成原理 计算机基础 栈 Java 静态路由 路由器 交换机 数字通信 网络工程 计算机网络 Web http 大学学习技巧 程序设计 算法

Spring注解学习-[email protected]和@Bean

发表于 2022-03-08 | 分类于 Spring | 0 | 阅读次数 106

注解概括

Configuration注解

被@Configuration所注解的类会被Spring认定为配置类,它可以和@Bean注解连用,向容器中注入bean对象。

Bean注解

在被@Configuration注解的类中的方法上注解上@Bean,被注解方法所返回的对象将加入到Spring容器的管理,同时方法的名字将作为该bean的默认名称即id。如果想自定义名称,可以给@Bean的value属性赋值想要的名称。

代码演示

以下代码使用@Configuration和@Bean想Spring容器注入bean对象。

新建实体类User.java

package cc.fireflyhut.study.entity;

public class User {

    private String username;

    private String password;

    public User() {}

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

新建配置类MyConfig.java

package cc.fireflyhut.study.config;


import cc.fireflyhut.study.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {

    /**
     * 向容器中注册一个id未user类型为User的Bean
     * 该Bean的id默认为方法名(user)如果想指定id,需要在@Bean注解中传入value值指定id
     */
    @Bean
    public User user() {
        return new User("admin", "123456");
    }

    /**
     * 指定注册到容器中的bean的id为user111
     */
    @Bean("user111")
    public User user1() {
        return new User("admin", "123456");
    }

}

新建测试主类MyTest.java

package cc.fireflyhut.study;

import cc.fireflyhut.study.config.MyConfig;
import cc.fireflyhut.study.entity.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MyTest {

    public static void main(String[] args) {
        // 获得注解配置容器类
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig.class);
        // 从容器中获得指定id的bean
        User user = (User)applicationContext.getBean("user111");
        System.out.println(user);

        // 从容器中获得所有指定类型的bean的名字即id
        String[] beanNames = applicationContext.getBeanNamesForType(User.class);
        // 遍历打印id
        for (String beanName : beanNames) {
            System.out.println(beanName);
        }
    }

}

打印结果
image.png

# 程序设计 # Java # Spring # Spring Framework
jdk动态代理
Spring注解学习[email protected]注解
  • 文章目录
  • 站点概览
优律

优律

优律的知识库

77 日志
20 分类
44 标签
E-mail Twitter Instagram
Links
  • CZLisyx - 浮生志
  • Vedfolnir
0%
© 2019 — 2023 萤火小屋——优律的博客网站
网站已勉强运行 
Halo博客系统技术支持