萤火小屋

优律的知识库

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

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

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

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

注解概括

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]注解
  • 文章目录
  • 站点概览
优律

优律

优律的知识库

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