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

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: [email protected]  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 becovered are:      Introduction to Spring framework Benefits of Spring framework Spring framework architecture Inversion of Control (IoC) Dependency Injection (DI) 3
  • 4.
    Spring Framework  Light-weightcomprehensive 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-ingeneric 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  Wiringof 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
  • 7.
  • 8.
    Core Package  Thefundamental 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  Providesa 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  Providesa 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  TheORM 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'sAOP 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  Webpackage 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 Containersand 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  Mostframeworks 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  Theorg.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  Thereare 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 <?xmlversion="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 ApplicationContextcontext = new ClassPathXmlApplicationContext( new String[] {"services.xml", "daos.xml"}); // an ApplicationContext is also a BeanFactory (via inheritance) BeanFactory factory = context; 24
  • 25.
    The Bean  Thecontainer 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 DependencyInjection  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 XmlBeanFactoryimplementation 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  BeanFactoryobject 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–XMLFile  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–XMLFile  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; importorg.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 intothe 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  Alldependencies 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 (codesnippet) 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 (codesnippet) 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  Alldependencies 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 (codesnippet) 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 (codesnippet) 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 (codesnippet) <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
  • 43.