Spring BeanFactory Interface API Guide


This guide will explain the important methods/API's of Spring BeanFactory interface with examples.

Key Points

  • The BeanFactory is the root interface for accessing a Spring bean container.
  • This interface is implemented by objects that hold a number of bean definitions, each uniquely identified by a String name.
  • Normally a BeanFactory will load bean definitions stored in a configuration source (such as an XML document), and use the org.springframework.beans package to configure the beans.

Spring BeanFactory Interface Class Diagram

Below class diagram shows the list of methods/APIs provided by BeanFactory interface:

Spring BeanFactory Methods with Examples

The below sample code demonstrate the usage of important BeanFactory interface methods. Note that the comments in below code are self-descriptive:
package net.javaguides.springboot;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Component;

/**
 * Created by Ramesh Fadatare
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        BeanFactory beanFactory = SpringApplication.run(Application.class, args);

        // Return the bean instance that uniquely matches the given object type, if any.
        UserService userService = beanFactory.getBean(UserService.class);
        System.out.println(userService.getUserName());

        // Determine the type of the bean with the given name.
        Class << ? > userService2 = beanFactory.getType("userService");
        System.out.println(userService2.getName());

        // Does this bean factory contain a bean definition or externally registered
        // singleton instance with the given name?
        boolean hasBean = beanFactory.containsBean("userService");
        System.out.println("containsBean userService :: " + hasBean);

        // Is this bean a prototype? That is, will getBean always return independent instances? 
        boolean isPrototype = beanFactory.isPrototype("userService");
        System.out.println(" isPrototype :: " + isPrototype);

        // Is this bean a shared singleton? That is, will getBean always return the same instance? 
        boolean isSingleton = beanFactory.isSingleton("userService");
        System.out.println(" isSingleton :: " + isSingleton);

        // Return an instance, which may be shared or independent, of the specified bean. 
        UserService userService3 = (UserService) beanFactory.getBean("userService");
        System.out.println(userService3.getUserName());
    }

}

@Component
class UserService {

    public String getUserName() {
        return "Spring Boot";
    }

}
Check out a complete step by step example of Spring BeanFactory interface at https://www.javaguides.net/2018/10/spring-beanfactory-interface-example.html

Reference


Comments