Thursday, 24 May 2018

What are spring beans? | Spring Tutorial | Spring basics | Spring Framework

Enjoying this Java & Spring tutorial?

Subscribe to Ram N Java on YouTube

Introduction

In the Spring Framework, Spring Beans are the backbone of your application. A Spring Bean is simply an object that is instantiated, assembled, and managed by the Spring IoC (Inversion of Control) container.

Instead of manually creating objects using the new keyword, the Spring container takes over the complete lifecycle of beans—from creation and dependency injection to destruction—enabling loose coupling and easy maintenance.

Ways to Define Spring Beans

Spring provides multiple ways to define and configure beans:

  • XML Configuration: Defined using the <bean> tag inside <beans>.
  • Annotation Configuration: Defined using annotations like @Component, @Service, @Repository, or @Controller.
  • Java-Based Configuration: Defined using @Configuration and @Bean annotations in pure Java classes.

1. Create the Java Bean Class

Here is a simple POJO class named Employee with a name property, setter method, and a display method:

public class Employee {
    private String name;

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

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

2. Configure the Bean in Spring XML

In your Spring configuration file (applicationContext.xml), define the bean using the <bean> element, giving it a unique id and configuring its properties:

<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.xsd">

    <bean id="employeeBean" class="Employee">
        <property name="name" value="Peter" />
    </bean>

</beans>
  

3. Retrieve the Bean from the Spring Container

Load the application context and retrieve the managed bean using its unique ID:

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

public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Employee emp = (Employee) context.getBean("employeeBean");
        emp.displayEmployeeDetails();
    }
}
  

Watch More Spring Tutorials


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

Click the below Image to Enlarge:
What are spring beans? | Spring Tutorial | Spring basics | Spring Framework

What are spring beans? | Spring Tutorial | Spring basics | Spring Framework

What are spring beans? | Spring Tutorial | Spring basics | Spring Framework

What are spring beans? | Spring Tutorial | Spring basics | 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">


    <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("employee");
        System.out.println(
                "Got employee object from the ApplicationContext(Spring Container)");
        employee.employeeDetails();

    }

}

Output

Apr 10, 2018 8:52:46 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5b37e0d2: startup date [Tue Apr 10 08:52:46 IST 2018]; root of context hierarchy
Apr 10, 2018 8:52:47 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_what_are_beans.zip?attredirects=0&d=1

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

Bitbucket Link:
https://bitbucket.org/ramram43210/spring/src/a1d5b66cf948298a0bb7c33e9b2c0967275f5a95/Spring_2018/SpringDemo_what_are_beans/?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
  • 1 comment:

    Tutorials