美文网首页
1. 依赖查找

1. 依赖查找

作者: hopi | 来源:发表于2021-07-09 10:37 被阅读0次

简介

以下内容为学习 Spring 教材后的知识点总结,方便个人复习 Spring 相关知识使用。并不适合入门学习。
Spring 可通过如下方式查找 Bean

  1. 通过 Bean 名称查找(实时、延迟)
  2. 通过 Bean 类型查找(单个、集合)
  3. 通过注解查找
    注:以上方式又可以分为: 实时查找、延迟查找、查找单个 Bean、查找集合 Bean。

实例

// 定义 1 个注解,两个 Java 类
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Super {
}

public class User {
    private Long id;
    private String name;
    // 省略 getter and setter
}

@Super
public class SuperUser extends User {
    private String address;
    // 省略 getter and setter
}
    <!-- 定义 Spring 配置文件 -->
    <bean id="user" class="demo.User" lazy-init="true">
        <property name="id" value="1"/>
        <property name="name" value="karson"/>
    </bean>
    <bean id="objectFactory" class="org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean">
        <property name="targetBeanName" value="user"/><!-- value="user" 引用前面定义的 id="user" 的 Bean-->
    </bean>
    <bean id="superUser" class="demo.SuperUser" parent="user" primary="true">
        <property name="address" value="北京"/>
    </bean>
        // 通过以上准备,开始演示相关源码
        // 通过 xml 文件创建 BeanFactory。
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath:/META-INF/spring-config.xml");
        // 1. 通过 Bean 名称实时查找单个 Bean。
        // 如设置 lazy-init="true",首次调用 getBean 才初始化 User 对象
        User userByName = (User) beanFactory.getBean("user");  

        // 2. 通过 Bean 类型实时查找单个 Bean。
        User userByType = beanFactory.getBean(User.class);
        
        // 3. 通过 ObjectFactory 查找单个 Bean。
        ObjectFactory<User> objectFactory = (ObjectFactory<User>) beanFactory.getBean("objectFactory");
        User user = objectFactory.getObject();

        if (beanFactory instanceof ListableBeanFactory) {
            ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
            // 4. 通过 Bean 类型查找 Bean 集合。
            Map<String, User> users = listableBeanFactory.getBeansOfType(User.class);
            // 5. 通过注解查找单个 Bean。
            Map<String, User> users = (Map) listableBeanFactory.getBeansWithAnnotation(Super.class);
        }

相关文章

  • 1. 依赖查找

    简介 以下内容为学习 Spring 教材后的知识点总结,方便个人复习 Spring 相关知识使用。并不适合入门学习...

  • 依赖查找和依赖注入

    依赖查找和依赖注入的区别 依赖查找:容器中的对象通过Api来查找自己所依赖的资源和对象 依赖注入:依赖对象和注入对...

  • Spring 依赖查找

    Spring 依赖查找 Java中的依赖查找 单一类型的依赖查找 JNDI - javax.naming.Con...

  • 查找依赖树

    使用maven命令打印出依赖树并保存到文件中 在打印出来的依赖树搜索依赖包的名字:

  • logback的使用

    1. 依赖的jar包 2. logback的加载 logback 首先会查找 logback.groovy 文件 ...

  • Android studio 依赖包重复报错问题

    解决方法: ” 图中可看出包依赖重复了,剩下的就是查找在哪个module依赖了这些包:2.查找依赖包:在studi...

  • 二分查找的两种实现 by Python

    时间复杂度:O(logn)二分查找应用场景的局限性:1.二分查找依赖的是顺序表结构,简单的说就是数组;2.二分查找...

  • Java J2EE中的依赖查找

    个人看法:设计依赖查找的设计模式,是为了解耦. 单一类型依赖查找JNDI javax.naming.Context...

  • CentOS7安装rabbitmq

    1. 安装依赖环境Erlang 2. 安装rabbitmq 3 查找安装目录 4 启动停止命令 5 开启web管理...

  • 什么是【依赖查找】

    依赖查找(Dependency Lookup,简称 DL),它是控制反转设计原则的一种实现方式。它的大体思路是:容...

网友评论

      本文标题:1. 依赖查找

      本文链接:https://www.haomeiwen.com/subject/oxvpyqtx.html