/** * spring容器做的事情: * 解析spring的配置文件,利用Java的反射机制创建对象 * */public class testHelloWorld { @Test public void testHelloWorld(){ //启动sping容器 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); //从spring容器中把对象提取出来 HelloWorld helloWorld=(HelloWorld)context.getBean("helloWorld"); helloWorld.sayHello(); HelloWorld alias=(HelloWorld)context.getBean("三毛"); alias.sayHello(); } /** * 静态工厂 * 在spring 内部,调用了HelloWorldFactory 内部的 getInstance 内部方法 * 而该方法的内容,就是创建对象的过程,是由程序员来完成的 * 这就是静态工厂 * */ @Test public void testHelloWorldFactory(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); HelloWorld helloWorld=(HelloWorld)context.getBean("helloWorldFactory"); helloWorld.sayHello(); } /** * 实例工厂 * 1.spring容器(beans)创建了一个实例工厂的bean * 2.该bean 调用了工厂方法的getInstance 方法产生对象 * */ @Test public void testHelloWorldFactory2(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); HelloWorld helloWorld=(HelloWorld)context.getBean("helloWorld3"); helloWorld.sayHello(); }
public class HelloWorld { public HelloWorld(){ System.out.println("spring 在默认的情况下,使用默认的构造函数"); } public void sayHello(){ System.out.println("hello"); } }
public class HelloWorldFactory { public static HelloWorld getInstance(){ return new HelloWorld(); } }
public class HelloWorldFactory2 { public HelloWorld getInstance(){ return new HelloWorld(); } }
<?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-beans-2.5.xsd"> <!-- beans 存放了很多个类 把一个类放入到spring容器中,该类就是bean --> <!-- 一个bean就是描述一个类 id就是标示符 命名规范:类的第一个字母变成小写,其他的字母保持不变 class为类的全名 --> <bean id="helloWorld" class="com.sanmao.spring.ioc.HelloWorld"></bean> <!--alias 别名--> <alias name="helloWorld" alias="三毛"></alias> <!--静态工厂--> <bean id="helloWorldFactory" class="com.sanmao.spring.ioc.HelloWorldFactory" factory-method="getInstance" ></bean> <!--实例工厂--> <bean id="helloWorldFactory2" class="com.sanmao.spring.ioc.HelloWorldFactory2"> </bean> <!--factory-bean 指向实例工厂的bean--> <!--factory-bean 实例工厂对象的方法--> <bean id="helloWorld3" factory-bean="helloWorldFactory2" factory-method="getInstance"></bean></beans>
作者:芥末无疆sss
链接:https://www.jianshu.com/p/688826c3c97c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。