spring原理

1、spring框架什么时候被加载?

(1)ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml")执行的时候,

spring容器对象被创建。

(2)同时,applicationContext.xml里面配置的对象被创建到内存中。(内存模型类似于HashMap)。容器利用反射机制创建bean的实例。如下图

spring原理

2、spring中配置的bean怎样被创建?

3、bean与bean之间的关系怎样维护?

代码结构图:

spring原理

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();
}
}
上一篇:【LeetCode】字符串 string(共112题)


下一篇:纯CSS实现tab选项卡切换