Spring的核心:IOC
三层结构中,各层之间如何调用?
|–Servlet需要一个“业务逻辑类”,new一个
|–“业务逻辑类”需要“持久层类”,new一个
|–若一个类被修改,依赖它的类都会受牵连
Spring的解决方案--所有类之间的"依赖关系"通过配置文件设置
IOC:控制反转
——把对象的创建、初始化、销毁交给Spring去做。
|--以前:创建、初始化、是程序员做;销毁是jvm的垃圾回收机制负责。
有了Spring,解放了程序员———不用管怎么创建对象,精力集中于业务逻辑,即如何使用 对象。
IOC的表现形式:以配置文件管理对象实例的协作关系。
Spring第一个代码
1.导包
spring包6个:ABCCE加个log
2.建类
建一个猫类和一个狗类
public class Cat {
public Cat() {
System.out.println(Cat.class+":构造方法");
}
public void speak(){
System.out.println("喵");
}
}
---------------------------------------------------
public class Dog {
public Dog() {
System.out.println(Dog.class+"的构造方法");
}
public void speak(){
System.out.println("汪");
}
}
3.applicationContext.xml
配置文件中有
什么是bean?——把类放入spring容器中,该类即为bean
bean标签用于描述类,需要:
|–id:唯一标识
|–class:类名
applicationContext.xml:
<?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 id="id_Cat" class="spring01.Cat" />
<bean id="id_Dog" class="spring01.Dog" />
</beans>
xml文件头解析:
<?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">XML文
件的schema约束文件路径
4.测试
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test01 {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring01/applicationContext.xml");
sysout
System.out.println(ac);
Cat cat = ac.getBean(Cat.class);
cat.speak();
Dog dog = ac.getBean(Dog.class);
dog.speak();
}
}
5.运行结果
从结果可以看出来当执行 ApplicationContext appc = newClassPathXmlApplicationContext(XML) ,spring就把cat和dog对象创建了。