SlideShare a Scribd company logo
Spring Framework

Prepared & Presented by

Arjun
1
Know your trainer
Name: Arjun
Phone : +91 9691053479
Email: thakurarjun247@gmail.com

 Freelance corporate trainer.
 More than 2 years of strong hands-on experience in top MNCs in Java
and related technologies.
 More than 2 years of experience as a Java trainer.
Clients / Previous Employers:

2
Agenda

Topics to be covered are:






Introduction to Spring framework
Benefits of Spring framework
Spring framework architecture
Inversion of Control (IoC)
Dependency Injection (DI)

3
Spring Framework

 Light-weight comprehensive framework for building Java SE and
Java EE applications
 Created by Rod Johnson
 JavaBeans-based configuration management, applying Inversionof-Control principles, specifically using the Dependency Injection
technique
• Reduce dependencies of components on specific
implmentation of other components.
• A core bean factory, which is usable globally
 Generic abstraction layer for database transaction management

4
Key Features

 Built-in generic strategies for JTA and a single JDBC DataSource
 This removes the dependency on a Java EE environment for
transaction support.
 Integration with persistence frameworks Hibernate, JDO and
iBATIS.
 MVC web application framework, built on core Spring functionality,
 supporting many technologies for generating views, including JSP.
 Extensive aspect-oriented programming (AOP) framework to
provide
 services such as transaction management.
 As with the Inversion-of-Control parts of the system, this aims to
improve the modularity of systems created using the framework.

5
Using Spring

 Wiring of components through Dependency Injection
 Promotes de-coupling among the parts that make the
application
 Test-Driven Development (TDD)
 POJO classes can be tested without being tied up with
the framework
 Declarative programming through AOP
 Easily configured aspects, esp. transaction support
 Integration with other technologies
 EJB for J2EE
 Hibernate, iBatis, JDBC (for data access)
 Velocity (for presentation)
 Struts and WebWork (For web)

6
Spring Framework

7
Core Package

 The fundamental part which provides the IoC and Dependency
Injection features
 BeanFactory, provides a sophisticated implementation of the
factory pattern
 Removes the need for programmatic singletons
 Decouple the configuration and specification of dependencies in
program logic.

8
Context Package

 Provides a way to access objects in a framework-style
 Inherits its features from the beans package and adds support for
• internationalization (I18N)
• event-propagation
• resource-loading
• transparent creation of contexts by

9
DAO Package

 Provides a JDBC-abstraction layer that removes the need to do
tedious
 JDBC coding and parsing of database-vendor specific error codes
 Programmatic as well as declarative transaction management for
• classes implementing special interfaces
• POJOs

10
ORM Package

 The ORM package provides integration layers for popular objectrelational mapping APIs, including JPA, JDO, Hibernate, and iBatis.
 Using the ORM package you can use all those O/R-mappers in
combination with all the other features Spring offers, such as the
simple declarative transaction management feature mentioned
previously

11
AOP Package

 Spring's AOP package provides an AOP Alliance-compliant aspectoriented programming implementation
• method-interceptors and pointcuts to cleanly decouple code
implementing functionality that should logically speaking be
separated
 Using source-level metadata functionality you can also incorporate all
kinds of behavioral information into your code

12
MVC Package

 Web package provides features, such as
• multipart file-upload functionality,
• the initialization of the IoC container using servlet listeners
• A web-oriented application context.
• Can be used together with WebWork or Struts,
 Spring's MVC package provides a Model-View-Controller (MVC)
 implementation for web applications
 Provides a clean separation between domain model code and web
forms, and allows all the other features of the Spring Framework.

13
IoC Container







Introduction
Basic Containers and Beans
Dependencies
The Application Context
Developing a Spring Application

14
Inversion of Control

 The Spring IoC container makes use of Java POJO classes and
configuration metadata.
 It produces a fully configured and executable system or application.

15
Introduction to IoC

 Traditional software is developed with the application code “in
control”
• The application defines the “main”function/method/entry point
• Calls the application’s components to perform processing
 Frameworks invert this relationship and call the application code
• “Don’t call us we’ll call you”
• Framework provides the “main”function/method/entry point
• Application code fits into the framework and is called when the
framework decides.
 A particular variant of IoC is “dependency injection”

16
Dependency Injection

 Most frameworks use the “Service Lookup” approach to allow
application code to find its dependencies.
• e.g. J2EE code looks up resources via JNDI
• CORBA applications find services via a Naming Service
• The lookup mechanism is hard coded into the application code
 Dependency Injection frameworks supply the resources that a
component needs when initialising it
• Component declares resources required (usually as interface
types)
• Framework configuration defines concrete instances to use
• Framework passes component the concrete resources at load
time
 “IoC containers” are “Dependency Injection” containers

17
Service Lookup vs. Dependency Injection

18
IoC Container

 The org.springframework.beans and org.springframework.context
packages provide the basis for the Spring Framework's IoC container.
 BeanFactory interface
provides an advanced configuration mechanism capable of managing
 objects of any nature.
 ApplicationContext interface , a sub interface of BeanFactory is used
for
• Easier integration with Spring's AOP features,
• Message resource handling (in internationalization),
• Event propagation
• Specific contexts such as the WebApplicationContext

19
Container and Beans

 A bean is simply an object that is instantiated, assembled and
otherwise managed by a Spring IoC container
 The beans, and the dependencies between them, are reflected in
the configuration metadata used by a container.
 org.springframework.beans.factory.BeanFactory is the representation
of the Spring IoC container, it’s responsible for:
• containing and managing beans,
• instantiating or sourcing application objects
• configuring such objects
• assembling the dependencies between objects.

20
The Container

 There are a number of implementations of the BeanFactory interface
 The most commonly used BeanFactory implementation is the
XmlBeanFactory class.
 The XmlBeanFactory takes the XML configuration metadata and uses
it to create a fully configured system or application.

21
Configuration Meta Data

 The meta-data informs the Spring container as to how to “instantiate,
configure, and assemble *the objects in your application+”.
 XML-based metadata is the most commonly used form of
configuration metadata.
 Configuration consists of at least one bean definition that the
container must manage, but could be more than one bean definition.
 When using XML-based configuration metadata, these beans are
configured as <bean/> elements inside a top-level <beans/> element.

22
Simple XML Configuration

<?xml version="1.0" encoding="UTF-8"?>
<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-beans2.5.xsd">
<bean id="..." class="...">
<!--collaborators and configuration for this bean go here -->
</bean>
<bean id="..." class="...">
<!--collaborators and configuration for this bean go here -->
</bean>
<!--more bean definitions go here -->
</beans>

23
Instantiating a Container

ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"services.xml", "daos.xml"});

// an ApplicationContext is also a BeanFactory (via inheritance)
BeanFactory factory = context;

24
The Bean

 The container manages the beans , and they are are created using
the configuration metadata.
 Bean definitions are represented as BeanDefinition objects, which
contain the following metadata:
 package-qualified class name: typically this is the actual
implementation class of the bean being defined.
 bean behavioral configuration elements,
• which state how the bean should behave in the container (scope,
lifecycle callbacks etc.,).
 references to other beans
• which are needed for the bean to do its work; these references
are also called collaborators or dependencies.
 other configuration settings
• An example would be the number of connections to use in a
bean that manages a connection pool, or the size limit of the
pool.
25
Benefits of Dependency Injection

 Flexible
• Avoid adding lookup code in business logic

 Testable
• No need to depend on external resources or containers for
testing
 Maintainable
• Promotes a consistent approach across all applications and
teams
• Allows reuse in different application environments by changing
configuration files instead of code

26
Dependency Injection






BeanFactory interface
XmlBeanFactory implementation
Bean configuration file
Constructor dependency Injection
• Dependencies are provided through the constructors of the
component
 Setter dependency injection
• Dependencies are provided through the JavaBeanstyle setter
methods of the component
• More popular than Constructor dependency injection
 Beans
 Injection Parameters

27
BeanFactory Class

 BeanFactory object is responsible for managing beans and their
dependencies
 Your application interacts with Spring's DI container through
BeanFactory interface
• BeanFactory object has to be created by the application typically
XmlBeanFactory
• BeanFactory object, when it gets created, read bean
configuration file and performs the wiring
• Once created, the application can access the beans via
BeanFactory interface
 XmlBeanFactory
• Convenience extension of DefaultListableBeanFactory that reads
bean definitions from an XML document

28
Beans

 The term “bean” is used to refer any component managed by the
BeanFactory
 The “beans” are in the form of JavaBeans (in most cases)
• no arg constructor
• getter and setter methods for the properties
 Beans are singletons by default
 Properties
• the beans may be simple values or references to other beans

29
The Bean – A Java Class

public class Example {
private int empid;
private String empname;
public int getEmpid() {
return empid;
}
public void setEmpid(int empid) {
this.empid = empid;
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
public Example() {super();}} // no arg constructor
30
Injecting Simple Values–XML File

 Each bean is defined using <bean> tag under the root of the <beans>
tag
 The id attribute is used to give the bean its default name
 The class attribute specifies the type of the bean
<bean id="firstBean" class="com.training.Example">
<property name="empname">
<value>ramesh</value>
</property>
<property name="empid"><value>100</value></property>
</bean>
</beans>

31
Injecting Simple Values–XML File

 Each bean is defined using <bean> tag under the root of the <beans>
tag
 The id attribute is used to give the bean its default name
 The class attribute specifies the type of the bean
<bean id="firstBean" class="com.training.Example">
<property name="empname">
<value>ramesh</value>
</property>
<property name="empid"><value>100</value></property>
</bean>
</beans>

32
Spring Application

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class TestExample {
public static void main(String[] args) {
BeanFactory bfact = new XmlBeanFactory(new
FileSystemResource("mybean.xml"));
Example exObj = (Example)bfact.getBean("firstBean");
System.out.println(exObj.getEmpid());
System.out.println(exObj.getEmpname());
}
}

33
Injection Parameter Types

 Spring supports various kinds of injection parameters
• Simple values
• Beans in the same factory
• Beans in another factory
• Collections
• Externally defined properties
 You can use these types for both setter or constructor injections

34
Injecting Bean into the same Factory

 Used when you need to inject one bean into another (target bean)
 Configure both beans first
 Configure an injection using <ref> tag in the target bean's <property>
or <constructor-arg>
 The type being injected does not have to be the exact type defined
on the target
 if the type defined on the target is an interface, the type being
injected must be an implementation of it
 if the type defined on the target is a class, the type being injected can
be the same type or sub-type

35
Constructor Injection

 All dependencies injected via constructor arguments
– Requires potentially complex constructor argument lists
 Avoids reliance on get/set naming conventions
– e.g. addStateObserver()
 Less flexible initialisation
– Need a constructor per configuration option
 Can be difficult to understand
– Rely on ordering of parameters

36
Constructor Dependency Injection
(code snippet)
public class Invoice {
private Items item;
private String customer;
private double amount;
public Invoice(Items item)
{
this.item = item;
}
public Invoice()
{
super();
}
// Set/Get Methods
}

public class Items {
private int itemno;
private String itemname;
public Items() {
super();
}
// Set/Get Methods
}

37
Constructor Dependency Injection
(code snippet)
public class TestConstDepend {
public static void main(String[] args) {
BeanFactory bf = new XmlBeanFactory(new
FileSystemResource("mybeandef.xml"));
Invoice inv = (Invoice)bf.getBean("Invoice");
System.out.println(inv.getItem());
System.out.println(inv.getCustomer());
System.out.println(inv.getAmount());
}
}

38
Setter Injection
 All dependencies injected via setter methods
– No need for constructors
 Allows flexible initialisation
– Any set of properties can be initialised
 Named properties allow for readable configuration data
– Clear what is being injected
 Requires JavaBean conventions to be followed
– Non standard method names are problematic
 Can result in invalid object configurations
– Need post initialisation checking methods

39
Setter Injection (code snippet)
public class Policy {
private int policyCode;
private String policyName;
public Policy(int policyCode,
String policyName) {
this.policyCode =
policyCode;
this.policyName =
policyName;
}
public Policy() {
super();
}
//SET-GET Methods
}

public class Insurance {
private int policynumber;
private Policy policyData;
public Policy getPolicyData() {
return policyData;
}
public void
setPolicyData(Policy
policyData) {
this.policyData =
policyData;
}
//SET-GET Methods
}

40
Setter Injection (code snippet)
public class TestSetterDependcy {
public static void main(String[] args) {
BeanFactory beanFact = new XmlBeanFactory
(new FileSystemResource("myBean.xml"));
Insurance ins =(Insurance)beanFact.getBean("Insurance");
System.out.println("Policy Number"+ins.getPolicynumber());
System.out.println("Policy Code“ +
ins.getPolicyData().getPolicyCode());
System.out.println("Policy Holder Name"+
ins.getPolicyData().getPolicyName());
}
}

41
Setter Injection (code snippet)
<beans>
<bean id="Insurance" class="com.training.Insurance">
<property name="policynumber“ <value>2345</value></property>
<property name="policyData"><ref local="Policy"/></property>
</bean>
<bean id="Policy" class="com.training.Policy">
<property name="policyCode"><value>100</value></property>
<property name="policyName"><value>Life
Insurance</value></property>
</bean>
</beans>

42
Thank You

43

More Related Content

What's hot

Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
Santosh Kumar Kar
 
Spring Boot
Spring BootSpring Boot
Spring Boot
Jaran Flaath
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
Jeevesh Pandey
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
Rasheed Waraich
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
07.pallav
 
Apache tomcat
Apache tomcatApache tomcat
Apache tomcat
Shashwat Shriparv
 
Spring Web MVC
Spring Web MVCSpring Web MVC
Spring Web MVC
zeeshanhanif
 
Introduction to Spring's Dependency Injection
Introduction to Spring's Dependency InjectionIntroduction to Spring's Dependency Injection
Introduction to Spring's Dependency Injection
Richard Paul
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
Jonathan Holloway
 
Spring Boot & Actuators
Spring Boot & ActuatorsSpring Boot & Actuators
Spring Boot & Actuators
VMware Tanzu
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVC
Dzmitry Naskou
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
Purbarun Chakrabarti
 
Spring Boot
Spring BootSpring Boot
Spring Boot
Jiayun Zhou
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
Joshua Long
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
Jeevesh Pandey
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
Pravin Pundge
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
Hùng Nguyễn Huy
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
Mike Ensor
 
Spring User Guide
Spring User GuideSpring User Guide
Spring User Guide
Muthuselvam RS
 

What's hot (20)

Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Apache tomcat
Apache tomcatApache tomcat
Apache tomcat
 
Spring Web MVC
Spring Web MVCSpring Web MVC
Spring Web MVC
 
Introduction to Spring's Dependency Injection
Introduction to Spring's Dependency InjectionIntroduction to Spring's Dependency Injection
Introduction to Spring's Dependency Injection
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Spring Boot & Actuators
Spring Boot & ActuatorsSpring Boot & Actuators
Spring Boot & Actuators
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVC
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Spring User Guide
Spring User GuideSpring User Guide
Spring User Guide
 

Viewers also liked

Dependency Injection And Ioc Containers
Dependency Injection And Ioc ContainersDependency Injection And Ioc Containers
Dependency Injection And Ioc Containers
Tim Murphy
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Attila Balogh-Biró
 
Dependency Injection in Spring in 10min
Dependency Injection in Spring in 10minDependency Injection in Spring in 10min
Dependency Injection in Spring in 10minCorneil du Plessis
 
Javascript & Ajax Basics
Javascript & Ajax BasicsJavascript & Ajax Basics
Javascript & Ajax BasicsRichard Paul
 
Spring dependency injection
Spring dependency injectionSpring dependency injection
Spring dependency injectionsrmelody
 
Dependency injection - the right way
Dependency injection - the right wayDependency injection - the right way
Dependency injection - the right way
Thibaud Desodt
 
Clean Code II - Dependency Injection
Clean Code II - Dependency InjectionClean Code II - Dependency Injection
Clean Code II - Dependency Injection
Theo Jungeblut
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
Rohit Kelapure
 
IoC and Mapper in C#
IoC and Mapper in C#IoC and Mapper in C#
IoC and Mapper in C#
Huy Hoàng Phạm
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
 

Viewers also liked (10)

Dependency Injection And Ioc Containers
Dependency Injection And Ioc ContainersDependency Injection And Ioc Containers
Dependency Injection And Ioc Containers
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Dependency Injection in Spring in 10min
Dependency Injection in Spring in 10minDependency Injection in Spring in 10min
Dependency Injection in Spring in 10min
 
Javascript & Ajax Basics
Javascript & Ajax BasicsJavascript & Ajax Basics
Javascript & Ajax Basics
 
Spring dependency injection
Spring dependency injectionSpring dependency injection
Spring dependency injection
 
Dependency injection - the right way
Dependency injection - the right wayDependency injection - the right way
Dependency injection - the right way
 
Clean Code II - Dependency Injection
Clean Code II - Dependency InjectionClean Code II - Dependency Injection
Clean Code II - Dependency Injection
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
 
IoC and Mapper in C#
IoC and Mapper in C#IoC and Mapper in C#
IoC and Mapper in C#
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 

Similar to Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control

Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Dineesha Suraweera
 
Session 43 - Spring - Part 1 - IoC DI Beans
Session 43 - Spring - Part 1 - IoC DI BeansSession 43 - Spring - Part 1 - IoC DI Beans
Session 43 - Spring - Part 1 - IoC DI Beans
PawanMM
 
Spring Fa Qs
Spring Fa QsSpring Fa Qs
Spring Fa Qsjbashask
 
Spring framework
Spring frameworkSpring framework
Spring framework
Rajkumar Singh
 
Spring (1)
Spring (1)Spring (1)
Spring (1)
Aneega
 
Spring framework
Spring frameworkSpring framework
Spring frameworkKani Selvam
 
Introduction to j2 ee frameworks
Introduction to j2 ee frameworksIntroduction to j2 ee frameworks
Introduction to j2 ee frameworks
Mukesh Kumar
 
Spring framework-tutorial
Spring framework-tutorialSpring framework-tutorial
Spring framework-tutorial
vinayiqbusiness
 
Java J2EE Interview Question Part 2
Java J2EE Interview Question Part 2Java J2EE Interview Question Part 2
Java J2EE Interview Question Part 2
Mindsmapped Consulting
 
Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2
javatrainingonline
 
Spring
SpringSpring
Spring
gauravashq
 
Spring
SpringSpring
Spring
gauravashq
 
Spring
SpringSpring
Spring
gauravashq
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
ASG
 
Java spring ppt
Java spring pptJava spring ppt
Java spring ppt
natashasweety7
 
Spring Basics
Spring BasicsSpring Basics
Spring Basics
Emprovise
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
Mehul Jariwala
 
스프링 프레임워크
스프링 프레임워크스프링 프레임워크
스프링 프레임워크
Yoonki Chang
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
Joshua Long
 

Similar to Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control (20)

Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Session 43 - Spring - Part 1 - IoC DI Beans
Session 43 - Spring - Part 1 - IoC DI BeansSession 43 - Spring - Part 1 - IoC DI Beans
Session 43 - Spring - Part 1 - IoC DI Beans
 
Spring 2
Spring 2Spring 2
Spring 2
 
Spring Fa Qs
Spring Fa QsSpring Fa Qs
Spring Fa Qs
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Spring (1)
Spring (1)Spring (1)
Spring (1)
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Introduction to j2 ee frameworks
Introduction to j2 ee frameworksIntroduction to j2 ee frameworks
Introduction to j2 ee frameworks
 
Spring framework-tutorial
Spring framework-tutorialSpring framework-tutorial
Spring framework-tutorial
 
Java J2EE Interview Question Part 2
Java J2EE Interview Question Part 2Java J2EE Interview Question Part 2
Java J2EE Interview Question Part 2
 
Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2Java J2EE Interview Questions Part 2
Java J2EE Interview Questions Part 2
 
Spring
SpringSpring
Spring
 
Spring
SpringSpring
Spring
 
Spring
SpringSpring
Spring
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Java spring ppt
Java spring pptJava spring ppt
Java spring ppt
 
Spring Basics
Spring BasicsSpring Basics
Spring Basics
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
 
스프링 프레임워크
스프링 프레임워크스프링 프레임워크
스프링 프레임워크
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 

Recently uploaded

De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 

Recently uploaded (20)

De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 

Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control

  • 1. Spring Framework Prepared & Presented by Arjun 1
  • 2. Know your trainer Name: Arjun Phone : +91 9691053479 Email: thakurarjun247@gmail.com  Freelance corporate trainer.  More than 2 years of strong hands-on experience in top MNCs in Java and related technologies.  More than 2 years of experience as a Java trainer. Clients / Previous Employers: 2
  • 3. Agenda Topics to be covered are:      Introduction to Spring framework Benefits of Spring framework Spring framework architecture Inversion of Control (IoC) Dependency Injection (DI) 3
  • 4. Spring Framework  Light-weight comprehensive framework for building Java SE and Java EE applications  Created by Rod Johnson  JavaBeans-based configuration management, applying Inversionof-Control principles, specifically using the Dependency Injection technique • Reduce dependencies of components on specific implmentation of other components. • A core bean factory, which is usable globally  Generic abstraction layer for database transaction management 4
  • 5. Key Features  Built-in generic strategies for JTA and a single JDBC DataSource  This removes the dependency on a Java EE environment for transaction support.  Integration with persistence frameworks Hibernate, JDO and iBATIS.  MVC web application framework, built on core Spring functionality,  supporting many technologies for generating views, including JSP.  Extensive aspect-oriented programming (AOP) framework to provide  services such as transaction management.  As with the Inversion-of-Control parts of the system, this aims to improve the modularity of systems created using the framework. 5
  • 6. Using Spring  Wiring of components through Dependency Injection  Promotes de-coupling among the parts that make the application  Test-Driven Development (TDD)  POJO classes can be tested without being tied up with the framework  Declarative programming through AOP  Easily configured aspects, esp. transaction support  Integration with other technologies  EJB for J2EE  Hibernate, iBatis, JDBC (for data access)  Velocity (for presentation)  Struts and WebWork (For web) 6
  • 8. Core Package  The fundamental part which provides the IoC and Dependency Injection features  BeanFactory, provides a sophisticated implementation of the factory pattern  Removes the need for programmatic singletons  Decouple the configuration and specification of dependencies in program logic. 8
  • 9. Context Package  Provides a way to access objects in a framework-style  Inherits its features from the beans package and adds support for • internationalization (I18N) • event-propagation • resource-loading • transparent creation of contexts by 9
  • 10. DAO Package  Provides a JDBC-abstraction layer that removes the need to do tedious  JDBC coding and parsing of database-vendor specific error codes  Programmatic as well as declarative transaction management for • classes implementing special interfaces • POJOs 10
  • 11. ORM Package  The ORM package provides integration layers for popular objectrelational mapping APIs, including JPA, JDO, Hibernate, and iBatis.  Using the ORM package you can use all those O/R-mappers in combination with all the other features Spring offers, such as the simple declarative transaction management feature mentioned previously 11
  • 12. AOP Package  Spring's AOP package provides an AOP Alliance-compliant aspectoriented programming implementation • method-interceptors and pointcuts to cleanly decouple code implementing functionality that should logically speaking be separated  Using source-level metadata functionality you can also incorporate all kinds of behavioral information into your code 12
  • 13. MVC Package  Web package provides features, such as • multipart file-upload functionality, • the initialization of the IoC container using servlet listeners • A web-oriented application context. • Can be used together with WebWork or Struts,  Spring's MVC package provides a Model-View-Controller (MVC)  implementation for web applications  Provides a clean separation between domain model code and web forms, and allows all the other features of the Spring Framework. 13
  • 14. IoC Container      Introduction Basic Containers and Beans Dependencies The Application Context Developing a Spring Application 14
  • 15. Inversion of Control  The Spring IoC container makes use of Java POJO classes and configuration metadata.  It produces a fully configured and executable system or application. 15
  • 16. Introduction to IoC  Traditional software is developed with the application code “in control” • The application defines the “main”function/method/entry point • Calls the application’s components to perform processing  Frameworks invert this relationship and call the application code • “Don’t call us we’ll call you” • Framework provides the “main”function/method/entry point • Application code fits into the framework and is called when the framework decides.  A particular variant of IoC is “dependency injection” 16
  • 17. Dependency Injection  Most frameworks use the “Service Lookup” approach to allow application code to find its dependencies. • e.g. J2EE code looks up resources via JNDI • CORBA applications find services via a Naming Service • The lookup mechanism is hard coded into the application code  Dependency Injection frameworks supply the resources that a component needs when initialising it • Component declares resources required (usually as interface types) • Framework configuration defines concrete instances to use • Framework passes component the concrete resources at load time  “IoC containers” are “Dependency Injection” containers 17
  • 18. Service Lookup vs. Dependency Injection 18
  • 19. IoC Container  The org.springframework.beans and org.springframework.context packages provide the basis for the Spring Framework's IoC container.  BeanFactory interface provides an advanced configuration mechanism capable of managing  objects of any nature.  ApplicationContext interface , a sub interface of BeanFactory is used for • Easier integration with Spring's AOP features, • Message resource handling (in internationalization), • Event propagation • Specific contexts such as the WebApplicationContext 19
  • 20. Container and Beans  A bean is simply an object that is instantiated, assembled and otherwise managed by a Spring IoC container  The beans, and the dependencies between them, are reflected in the configuration metadata used by a container.  org.springframework.beans.factory.BeanFactory is the representation of the Spring IoC container, it’s responsible for: • containing and managing beans, • instantiating or sourcing application objects • configuring such objects • assembling the dependencies between objects. 20
  • 21. The Container  There are a number of implementations of the BeanFactory interface  The most commonly used BeanFactory implementation is the XmlBeanFactory class.  The XmlBeanFactory takes the XML configuration metadata and uses it to create a fully configured system or application. 21
  • 22. Configuration Meta Data  The meta-data informs the Spring container as to how to “instantiate, configure, and assemble *the objects in your application+”.  XML-based metadata is the most commonly used form of configuration metadata.  Configuration consists of at least one bean definition that the container must manage, but could be more than one bean definition.  When using XML-based configuration metadata, these beans are configured as <bean/> elements inside a top-level <beans/> element. 22
  • 23. Simple XML Configuration <?xml version="1.0" encoding="UTF-8"?> <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-beans2.5.xsd"> <bean id="..." class="..."> <!--collaborators and configuration for this bean go here --> </bean> <bean id="..." class="..."> <!--collaborators and configuration for this bean go here --> </bean> <!--more bean definitions go here --> </beans> 23
  • 24. Instantiating a Container ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"services.xml", "daos.xml"}); // an ApplicationContext is also a BeanFactory (via inheritance) BeanFactory factory = context; 24
  • 25. The Bean  The container manages the beans , and they are are created using the configuration metadata.  Bean definitions are represented as BeanDefinition objects, which contain the following metadata:  package-qualified class name: typically this is the actual implementation class of the bean being defined.  bean behavioral configuration elements, • which state how the bean should behave in the container (scope, lifecycle callbacks etc.,).  references to other beans • which are needed for the bean to do its work; these references are also called collaborators or dependencies.  other configuration settings • An example would be the number of connections to use in a bean that manages a connection pool, or the size limit of the pool. 25
  • 26. Benefits of Dependency Injection  Flexible • Avoid adding lookup code in business logic  Testable • No need to depend on external resources or containers for testing  Maintainable • Promotes a consistent approach across all applications and teams • Allows reuse in different application environments by changing configuration files instead of code 26
  • 27. Dependency Injection     BeanFactory interface XmlBeanFactory implementation Bean configuration file Constructor dependency Injection • Dependencies are provided through the constructors of the component  Setter dependency injection • Dependencies are provided through the JavaBeanstyle setter methods of the component • More popular than Constructor dependency injection  Beans  Injection Parameters 27
  • 28. BeanFactory Class  BeanFactory object is responsible for managing beans and their dependencies  Your application interacts with Spring's DI container through BeanFactory interface • BeanFactory object has to be created by the application typically XmlBeanFactory • BeanFactory object, when it gets created, read bean configuration file and performs the wiring • Once created, the application can access the beans via BeanFactory interface  XmlBeanFactory • Convenience extension of DefaultListableBeanFactory that reads bean definitions from an XML document 28
  • 29. Beans  The term “bean” is used to refer any component managed by the BeanFactory  The “beans” are in the form of JavaBeans (in most cases) • no arg constructor • getter and setter methods for the properties  Beans are singletons by default  Properties • the beans may be simple values or references to other beans 29
  • 30. The Bean – A Java Class public class Example { private int empid; private String empname; public int getEmpid() { return empid; } public void setEmpid(int empid) { this.empid = empid; } public String getEmpname() { return empname; } public void setEmpname(String empname) { this.empname = empname; } public Example() {super();}} // no arg constructor 30
  • 31. Injecting Simple Values–XML File  Each bean is defined using <bean> tag under the root of the <beans> tag  The id attribute is used to give the bean its default name  The class attribute specifies the type of the bean <bean id="firstBean" class="com.training.Example"> <property name="empname"> <value>ramesh</value> </property> <property name="empid"><value>100</value></property> </bean> </beans> 31
  • 32. Injecting Simple Values–XML File  Each bean is defined using <bean> tag under the root of the <beans> tag  The id attribute is used to give the bean its default name  The class attribute specifies the type of the bean <bean id="firstBean" class="com.training.Example"> <property name="empname"> <value>ramesh</value> </property> <property name="empid"><value>100</value></property> </bean> </beans> 32
  • 33. Spring Application import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.FileSystemResource; public class TestExample { public static void main(String[] args) { BeanFactory bfact = new XmlBeanFactory(new FileSystemResource("mybean.xml")); Example exObj = (Example)bfact.getBean("firstBean"); System.out.println(exObj.getEmpid()); System.out.println(exObj.getEmpname()); } } 33
  • 34. Injection Parameter Types  Spring supports various kinds of injection parameters • Simple values • Beans in the same factory • Beans in another factory • Collections • Externally defined properties  You can use these types for both setter or constructor injections 34
  • 35. Injecting Bean into the same Factory  Used when you need to inject one bean into another (target bean)  Configure both beans first  Configure an injection using <ref> tag in the target bean's <property> or <constructor-arg>  The type being injected does not have to be the exact type defined on the target  if the type defined on the target is an interface, the type being injected must be an implementation of it  if the type defined on the target is a class, the type being injected can be the same type or sub-type 35
  • 36. Constructor Injection  All dependencies injected via constructor arguments – Requires potentially complex constructor argument lists  Avoids reliance on get/set naming conventions – e.g. addStateObserver()  Less flexible initialisation – Need a constructor per configuration option  Can be difficult to understand – Rely on ordering of parameters 36
  • 37. Constructor Dependency Injection (code snippet) public class Invoice { private Items item; private String customer; private double amount; public Invoice(Items item) { this.item = item; } public Invoice() { super(); } // Set/Get Methods } public class Items { private int itemno; private String itemname; public Items() { super(); } // Set/Get Methods } 37
  • 38. Constructor Dependency Injection (code snippet) public class TestConstDepend { public static void main(String[] args) { BeanFactory bf = new XmlBeanFactory(new FileSystemResource("mybeandef.xml")); Invoice inv = (Invoice)bf.getBean("Invoice"); System.out.println(inv.getItem()); System.out.println(inv.getCustomer()); System.out.println(inv.getAmount()); } } 38
  • 39. Setter Injection  All dependencies injected via setter methods – No need for constructors  Allows flexible initialisation – Any set of properties can be initialised  Named properties allow for readable configuration data – Clear what is being injected  Requires JavaBean conventions to be followed – Non standard method names are problematic  Can result in invalid object configurations – Need post initialisation checking methods 39
  • 40. Setter Injection (code snippet) public class Policy { private int policyCode; private String policyName; public Policy(int policyCode, String policyName) { this.policyCode = policyCode; this.policyName = policyName; } public Policy() { super(); } //SET-GET Methods } public class Insurance { private int policynumber; private Policy policyData; public Policy getPolicyData() { return policyData; } public void setPolicyData(Policy policyData) { this.policyData = policyData; } //SET-GET Methods } 40
  • 41. Setter Injection (code snippet) public class TestSetterDependcy { public static void main(String[] args) { BeanFactory beanFact = new XmlBeanFactory (new FileSystemResource("myBean.xml")); Insurance ins =(Insurance)beanFact.getBean("Insurance"); System.out.println("Policy Number"+ins.getPolicynumber()); System.out.println("Policy Code“ + ins.getPolicyData().getPolicyCode()); System.out.println("Policy Holder Name"+ ins.getPolicyData().getPolicyName()); } } 41
  • 42. Setter Injection (code snippet) <beans> <bean id="Insurance" class="com.training.Insurance"> <property name="policynumber“ <value>2345</value></property> <property name="policyData"><ref local="Policy"/></property> </bean> <bean id="Policy" class="com.training.Policy"> <property name="policyCode"><value>100</value></property> <property name="policyName"><value>Life Insurance</value></property> </bean> </beans> 42