Spring(IOC) 对象创建三种方式、对象bean起别名
IOC(控制翻转)概念把对象的创建、初始化、销毁等工作交给spring容器来做helloWorld案例步骤:1、写一个HelloWorld类2、写一个配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns
·
IOC(控制翻转)
概念
把对象的创建、初始化、销毁等工作交给spring容器来做
helloWorld案例
步骤:
1、写一个HelloWorld类
2、写一个配置文件
<?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
一个bean代表一个类
所以beans就是很多个类
-->
<!--
一个类
id 标示符
class 类的全名
-->
<bean id="helloWorld" class="com.itheima09.spring.ioc.helloworld.HelloWorld">
</bean>
</beans>
3、客户端
说明:
Spring容器的作用就是为HelloWorld这个类创建对象
public class HelloWorldTest {
@Test
public void testHello(){
/**
* 以前的作法:创建对象,并调用
*/
HelloWorld helloWorld = new HelloWorld();
helloWorld.hello();
}
@Test
public void testHello_Spring(){
/**
* 1启动spring容器
* 2从spring容器中把对象提取出来
* 3对象调用方法
*/
//启动了spring容器了
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
//从spring容器中把helloworld对象提取出来
HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");
helloWorld.hello();
}
}
spring 创建对象的三种方法:
<?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">
<!--
把helloWorld这个类放入到spring容器中 :使用构造函数创建对象
-->
<bean id="helloWorld" lazy-init="true"
class="com.itheima09.spring.ioc.createobject.method.HelloWorld"></bean>
<!--
引入静态工厂类
factory-bean 指明工厂bean
-->
<bean id="helloWorld2" lazy-init="true"
class="com.itheima09.spring.ioc.createobject.method.HelloWorldFactory"
factory-method="getInstance"></bean>
<!--
引入实例工厂
-->
<bean id="helloWorldFactory"
class="com.itheima09.spring.ioc.createobject.method.HelloWorldFactory2"></bean>
<!--
factory-bean 指向工厂bean
factory-method 工厂方法
-->
<bean id="helloWorld3" factory-bean="helloWorldFactory" lazy-init="true"
factory-method="getInstance"></bean>
</beans>
public class HelloWorldTest {
@Test
public void testCreateObject_DefaultConstructor(){
//启动spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld");
helloWorld.hello();
}
@Test
public void testCreateObject_StaticFactory(){
/**
* 引入静态工厂类 :测试
*/
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld2");
helloWorld.hello();
}
@Test
public void testCreateObject_InstanceFactory(){
/**
* 引入实例工厂:测试
*/
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld = (HelloWorld)context.getBean("helloWorld3");
helloWorld.hello();
}
}
1.默认构造函数
2.静态工厂
3.实例工厂
别名:
主要作用:将一个bean 在多个模块中使用不同的别名
<bean id="helloWorld" class="com.itheima09.spring.ioc.alias.HelloWorld"></bean>
<alias name="helloWorld" alias="王二麻子"/>
//测试:
@Test
public void testAlias(){
//启动spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld = (HelloWorld)context.getBean("狗蛋");
helloWorld.hello();
}
更多推荐
已为社区贡献1条内容
所有评论(0)