Dependency Injection (DI) and control inversion (IoC), meaning the same
In the traditional way, if Java instance A requires another instance B, then new B () is required, and then a is used, that is, the caller a creates an instance of the callee B
Dependency Injection mode: The work of creating callee B is no longer done by a, but is done by the spring container (or by the factory-mode factory) and then injected into the caller, thus becoming a dependency injection, because A and B are dependency relationships.
There are two ways of dependency injection:
(1) Set Value injection
Spring uses the set method to inject values into the members of Class A.
(2) Construction injection
Injected through the constructor.
Examples are as follows:
Code logic:
The service injects dog and cat through the constructor, which is construction injection, while the attribute-age of dog and cat is injected through the set method, which is the set value injection, which implements the following configuration file:
<?xml version= "1.0" encoding= "UTF-8"? ><beansxmlns= "Http://www.springframework.org/schema/beans" xmlns: Xsi= "Http://www.w3.org/2001/XMLSchema-instance" xmlns:p= "http://www.springframework.org/schema/p" xsi: schemalocation= "Http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/ Spring-beans-3.1.xsd "><!--<bean id=" dog "class=" Com.ehr.service.Service "></bean>dog dog =new Dog ( ); --<bean id = "Dog" class= "Com.learn.DAO.impl.Dog" > <property name= "dage" value= "a" ></property> </bean> <bean id= ' cat ' class= ' com.learn.DAO.impl.Cat ' > <property name= ' cage ' value= ' ></ property> </bean> <bean id = "Service" class= "Com.ehr.service.Service" > <constructor-arg ref= "Dog" ></constructor-arg> <constructor-arg ref= "Cat" ></constructor-arg> </bean></beans >
Service:
</pre>package Com.ehr.service;import Org.springframework.context.applicationcontext;import Org.springframework.context.support.classpathxmlapplicationcontext;import Com.learn.dao.icat;import Com.learn.dao.idog;import Com.learn.dao.impl.cat;import Com.learn.dao.impl.dog;public class Service {<span style= "White-space:pre" ></span>idog dog;<span style= "White-space:pre" ></span>icat Cat;<span Style= "White-space:pre" ></span><span style= "White-space:pre" ></span>public Service (IDog dog, ICat cat) {<span style= "white-space:pre" ></span>this.dog = Dog;<span style= "White-space:pre" ></ Span>this.cat = Cat;<span style= "white-space:pre" ></span>}<span style= "White-space:pre" ></ Span><span style= "White-space:pre" ></span>public static void Main (string[] args) {<span style= " White-space:pre "></span>applicationcontext context = new Classpathxmlapplicationcontext (<span style=") White-spAce:pre "></span> " Applicationcontext.xml ") <span style=" White-space:pre "> </span>service S1 = (service) Context.getbean ("service") <span style= "White-space:pre" ></span> S1.dog.bark (); <span style= "White-space:pre" ></span>s1.cat.bark (); <span style= "White-space:pre" ></span>}}</p><p>dog</p><p><pre name= "code" class= "Java" >package Com.learn.dao.impl;public class Dog implements Com.learn.DAO.IDog {int dage;public void setdage (int dage) {this.dage = dag e;} public void bark () {System.out.println ("Dog.bark ()" + "Wangwang" + Dage);}}
Idog
Package Com.learn.dao;public interface Idog {public void bark ();
Cat
Package Com.learn.dao.impl;import Com.learn.dao.icat;public class Cat implements ICat {int cage;public void setcage (int c Age) {this.cage = cage;} @Overridepublic void Bark () {System.out.println ("Cat.bark ()" + Cage);}}
ICat
Package Com.learn.dao;public interface ICat {public void bark ();
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
SSH Learning nine Dependency Injection