Thursday, 24 May 2018

How to get the spring bean using alias name? | Spring Tutorial | Spring Framework

🔥 Master Java & Spring with Us!

Join the Ram N Java family for crystal-clear coding tutorials. Level up your career today!

SUBSCRIBE NOW (IT'S FREE!)

Using Alias Names for Spring Beans

In the Spring Framework, every bean needs a unique identifier. But did you know you can give a single bean multiple names? These are called Aliases, and they are incredibly useful for making your configuration more flexible and readable!

1. What is a Bean Alias?

An alias is simply an alternative name for a bean. Think of it like a nickname. Whether you call the bean by its primary ID or one of its aliases, the Spring Container will return the exact same instance. This is perfect when different parts of a large system need to refer to the same object using different naming conventions.

2. How to Define Aliases in XML

In your Spring XML configuration file, you can define an alias using the <alias> tag. You just need to specify the name (the original bean ID) and the alias (the new name you want to use). You can also use the name attribute within the <bean> tag to provide multiple names separated by commas or semicolons.

3. Retrieving Beans by Alias

When you use context.getBean("yourAliasName"), Spring looks through its registry. If "yourAliasName" is recognized as an alias for a specific bean ID, it fetches that bean for you. From the developer's perspective, it works exactly the same way as retrieving by a standard ID.

4. Why Use Aliases?

Aliases help in decoupling. If you are integrating two different modules that expect different names for the same service, aliases bridge that gap without you having to change the code in either module. It keeps your Spring configuration clean, organized, and professional!


Click here to watch on Youtube:
https://www.youtube.com/watch?v=87RYVQnctgU&list=UUhwKlOVR041tngjerWxVccw

Click the below Image to Enlarge:
How to get the spring bean using alias name? | Spring Tutorial | Spring Framework

How to get the spring bean using alias name? | Spring Tutorial | Spring Framework

How to get the spring bean using alias name? | Spring Tutorial | Spring Framework

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0%20http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ram.core</groupId>
    <artifactId>SpringDemo</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>SpringDemo</name>
    <url>http://maven.apache.org</url>

    <properties>
        <spring.version>5.0.2.RELEASE</spring.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- Spring 5 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</project>

Employee.java

package com.ram.model;

/**
 * Spring bean
 */

public class Employee
{
    private String name;

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

    public void employeeDetails()
    {
        System.out.println("Employee Name =  " + name);
    }
}

applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">


    <alias name="employee" alias="employeeAlias1"/>
    <alias name="employee" alias="employeeAlias2"/>

    <bean id="employee" class="com.ram.model.Employee">
        <property name="name" value="Peter" />
    </bean>

</beans>

App.java

package com.ram.core;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ram.model.Employee;

public class App
{
    public static void main(String[] args)
    {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "applicationContext.xml");

        System.out.println("---------------------------------------");

        Employee employee = (Employee) context.getBean("employeeAlias2");
        System.out.println(
                "Got employee object from the ApplicationContext(Spring Container)");
        employee.employeeDetails();

    }

}

Output

Apr 11, 2018 9:06:15 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5b37e0d2: startup date [Wed Apr 11 09:06:15 IST 2018]; root of context hierarchy
Apr 11, 2018 9:06:15 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
---------------------------------------
Got employee object from the ApplicationContext(Spring Container)
Employee Name =  Peter

Click the below link to download the code:
https://sites.google.com/site/ramj2eev2/java_basics/SpringDemo_alias_name.zip?attredirects=0&d=1

Github Link:
https://github.com/ramram43210/javaee/tree/master/Spring_2018/SpringDemo_alias_name

Bitbucket Link:
https://bitbucket.org/ramram43210/spring/src/a1d5b66cf948298a0bb7c33e9b2c0967275f5a95/Spring_2018/SpringDemo_alias_name/?at=master

See also:

  • All JavaEE Videos Playlist
  • All JavaEE Videos
  • All JAVA EE Links
  • Spring Tutorial
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • Cooking Tutorial
  • No comments:

    Post a Comment

    Tutorials