1、spring框架什么时候被加载?
(1)ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml")执行的时候,
spring容器对象被创建。
(2)同时,applicationContext.xml里面配置的对象被创建到内存中。(内存模型类似于HashMap)。容器利用反射机制创建bean的实例。如下图
2、spring中配置的bean怎样被创建?
3、bean与bean之间的关系怎样维护?
代码结构图:
applicationContext代码
<?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.xsd"> <bean class="com.spring.service.SpringService" id="springService">
<property name="userName" value="lvyf"/>
<property name="tService" ref="testService"></property>
</bean> <bean class="com.spring.service.TestService" id="testService">
<property name="pwd" value="123456"/>
</bean>
</beans>
SpringService代码
package com.spring.service; public class SpringService {
private String userName; private TestService tService; public TestService gettService() {
return tService;
} public void settService(TestService tService) {
this.tService = tService;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public void sayHello() {
System.out.println("hello world " + userName);
tService.getPasswd();
} }
TestService代码
package com.spring.service; public class TestService {
private String pwd; public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} public void getPasswd(){
System.out.println(pwd);
}
}
Run代码
package com.run; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.service.SpringService; public class Run { public static void testRun(){
//1、创建spring的IOC容器对象
@SuppressWarnings("resource")
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-bean.xml");
//2、从IOC容器获取spring bean实例
//SpringService sService = (SpringService)ac.getBean("springService");
SpringService sService = (SpringService)ac.getBean(SpringService.class);
//3、调用sayHello方法
sService.sayHello();
} public static void main(String[] args) {
testRun();
}
}