Back to Javatutorial

Spring容器与IOC

docs/Spring全家桶/Spring/Spring容器与IOC.md

1.0.03.7 KB
Original Source

IoC Inversion of Control ļдΪƷתһżһ˼룬һҪ̷ָܹƳϡij

Spring ͨ IoC Java ʵͳʼƶ֮ϵǽ IoC Java Ϊ Spring Beanʹùؼ new Java ûκ

IoC Spring Ҫĺ֮һᴩ Spring ӵɳ̡

ƷתIoC

ڴͳ Java ӦУһҪһеԻ򷽷ͨͨ new Object() ķʽߵĶ󴴽ȻʵԻ򷽷ĵáΪ˷ǿԽǰ߳Ϊߡ߳ΪߡҲ˵ű߶󴴽ĿȨ

Spring ӦУJava 󴴽ĿȨ IoC 첡

Աͨ XML ļע⡢Java ȷʽ Java ж壬 XML ļʹ <bean> ǩ Java ʹ @Component עȡ Spring ʱIoC Զݶ壬Щ󴴽Щ IoC Ķ󱻳Ϊ Spring Bean Ҫʹij Bean ʱֱӴ IoC лȡͨ ApplicationContext getBean() Ҫֶͨ루 new Obejct() ķʽ

IoC ı䲻ǴģǴ˼Ϸˡӻλĸı䡣ԭһҪʹʲôԴͻԼ Spring ӦУIoC Ȩ˱һĵȴ IoC ҪĶBean

ְ淢˿ȨķתԭͨʵֵĶĴת IoC æʵ֣ǽ̳Ϊ Spring ġƷת

ע루DI

˽ IoC ֮ǻҪ˽һdzҪĸע롣

ע루Denpendency InjectionдΪ DI Martin Fowler 2004 ڶԡƷתнʱġMartin Fowler ΪƷתһʺܻɬ޷˺ֱӵ⡰ﷴתˡʹáע롱桰Ʒת

УͶ֮ǴһֽĹϵ˵ϵһҪõһ󣬼дһԣһĶ

磬һΪ B Java ࣬Ĵ¡

public class B { String bid; A a; }

ӴԿB дһ A ͵Ķ aʱǾͿ˵ B Ķڶ aעǾǻ֡ϵġ

֪Ʒת˼ Spring Ĵڶ󴴽УSpring ԶϵĶע뵽ǰУνġע롱

ע뱾 Spring Bean עһֻ֣һԶѡ

IoC Ĺԭ

Java Уϵͳеĸ֮䡢ģ֮䡢ϵͳӲϵͳ֮䣬ٶһϹϵ

һϵͳ϶ȹߣôͻά⣬ȫûϵĴ뼸޷κιڼеĹܶҪ֮໥Э໥ɡڳʱе˼һ㶼ڲӰϵͳܵǰ£޶ȵĽ϶ȡ

IoC ײͨģʽJava ķơXML ȼ϶Ƚ͵޶ȣҪ¡

ļ Bean.xmlУԸԼ֮ϵã ǿ԰ IoC һIJƷ Spring Bean ʱزЩļõĻϢԼ֮ϵ IoC Java ķƣӦĶ󣨼 Spring Beanϵע뵽ĶС

ڶĻϢ֮ϵļжģûڴнϣ˼ʹı䣬ҲֻҪļн޸ļɣ Java ޸ģ Spring IoC ʵֽԭ

IoC ʵ

IoC ˼ IoC ʵֵģIoC ײʵһ Bean Spring Ϊṩֲͬ IoC Ƿֱ BeanFactory ApplicationContext

BeanFactory

BeanFactory IoC Ļʵ֣Ҳ Spring ṩ򵥵 IoC ṩ IoC Ĺܣ org.springframework.beans.factory.BeanFactory ӿڶ塣

BeanFactory أlazy-loadƣڼļʱ̴ Java ֻглȡʹãԶʱŻᴴ

ʾ 1

ͨһʵʾʾ BeanFactory ʹá

1. HelloSpring ĿУ MainApp Ĵ޸Ϊʹ BeanFactory ȡ HelloWorld Ķ󣬾¡

public static void main(String[] args) { BeanFactory context = new ClassPathXmlApplicationContext("Beans.xml"); HelloWorld obj = context.getBean("helloWorld", HelloWorld.class); obj.getMessage(); }

  1. MainApp.javą¡

message : Hello World!

ע⣺BeanFactory Spring ڲʹýӿڣͨ²ṩԱʹá

ApplicationContext

ApplicationContext BeanFactory ӿڵӽӿڣǶ BeanFactory չApplicationContext BeanFactory ĻҵĹܣ AOP̣ʻֵ֧ȡ

ApplicationContext ӿõʵ࣬±

ʵʾ
ClassPathXmlApplicationContext· ClassPath ָ XML ļ ApplicationContext ʵApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
FileSystemXmlApplicationContextָļϵͳ·ָ XML ļ ApplicationContext ʵApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);

ϱʾУ configLocation ָ Spring ļƺλã Beans.xml

ʾ 2

Ǿͨһʵʾ ApplicationContext ʹá

  1. ޸ HelloSpring Ŀ MainApp main() Ĵ룬¡
public static void main(String[] args) {
//ʹ FileSystemXmlApplicationContext ָ·µļ Bean.xml
BeanFactory  context = new FileSystemXmlApplicationContext("D:\\eclipe workspace\\spring workspace\\HelloSpring\\src\\Beans.xml");
HelloWorld  obj = context.getBean("helloWorld", HelloWorld.class);
obj.getMessage();
}
  1. MainApp.javą¡

message : Hello World!

ο

https://www.w3cschool.cn/wkspring https://www.runoob.com/w3cnote/basic-knowledge-summary-of-spring.html http://codepub.cn/2015/06/21/Basic-knowledge-summary-of-Spring https://dunwu.github.io/spring-tutorial https://mszlu.com/java/spring http://c.biancheng.net/spring/aop-module.html