docs/Spring全家桶/Spring/Spring容器与IOC.md
IoC Inversion of Control ļдΪƷתһżһ˼룬һҪ̷ָܹƳϡij
Spring ͨ IoC Java ʵͳʼƶ֮ϵǽ IoC Java Ϊ Spring Beanʹùؼ new Java ûκ
IoC Spring Ҫĺ֮һᴩ Spring ӵɳ̡
ڴͳ 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 ġƷת
˽ 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 עһֻ֣һԶѡ
Java Уϵͳеĸ֮䡢ģ֮䡢ϵͳӲϵͳ֮䣬ٶһϹϵ
һϵͳ϶ȹߣôͻά⣬ȫûϵĴ뼸κιڼеĹܶҪ֮Эɡڳʱе˼һ㶼ڲӰϵͳܵǰ£ȵĽ϶ȡ
IoC ײͨģʽJava ķơXML ȼ϶Ƚ͵ȣҪ¡
ļ Bean.xmlУԸԼ֮ϵã ǿ IoC һIJƷ Spring Bean ʱزЩļõĻϢԼ֮ϵ IoC Java ķƣӦĶ Spring Beanϵע뵽ĶС
ڶĻϢ֮ϵļжģûڴнϣ˼ʹı䣬ҲֻҪļнļɣ Java ģ Spring IoC ʵֽԭ
IoC ˼ IoC ʵֵģIoC ײʵһ Bean Spring Ϊṩֲͬ IoC Ƿֱ BeanFactory ApplicationContext
BeanFactory IoC Ļʵ֣Ҳ Spring ṩ IoC ṩ IoC Ĺܣ org.springframework.beans.factory.BeanFactory ӿڶ塣
BeanFactory أlazy-loadƣڼļʱ̴ Java ֻглȡʹãԶʱŻᴴ
ͨһʵʾʾ 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(); }
message : Hello World!
ע⣺BeanFactory Spring ڲʹýӿڣͨ²ṩԱʹá
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
Ǿͨһʵʾ ApplicationContext ʹá
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();
}
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