一、初识Spring
1.1 Spring简介
- Spring:Spring框架由Rod Johnson开发。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
- Spring的优点:
1.2 Spring框架的组成结构
1.3 Spring的核心机制
程序中主要是用过Spring容器来访问容器中的Bean,ApplicationContext是Spring容器中最常用的接口,该接口有两个实现类:
-
ClassPathXmlApplicationContext:从类加载路径下搜索配置文件,并根据文件来创建Spring容器; -
FileSystemXmlApplicationContext:从文件系统的相对路径或绝对路径下去搜索配置文件,并根据配置文件来创建Spring容器。 public class test {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("src/applicationContext.xml");
Human human = (Human) applicationContext.getBean("am");
human.eat();
human.speak();
ApplicationContext applicationContex1t = new FileSystemXmlApplicationContext("src/applicationContext.xml");
Human human1 = (Human) applicationContext1.getBean("ch");
human1.eat();
human1.speak();
}
}
也可以通过Bean工厂的方式来访问容器中的Bean:
public class test2 {
public static void main(String[] args) {
BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("src/applicationContext.xml"));
Human human = (Human) beanFactory.getBean("am");
human.eat();
human.speak();
}
}
1.4 为什么要使用Spring?
一直有一个接口Human,在此接口中定义两个方法:void eat();和void walk();,再利用对其的实例化来实现接口中的方法:
public interface Human {
void eat();
void walk();
}
package cn.spring.iface;
import cn.spring.face.Human;
public class Chinese implements Human {
@Override
public void eat() {
System.out.println("舌尖上的中国,中国人很会吃...");
}
@Override
public void walk() {
System.out.println("中国人喜欢散步...");
}
package cn.spring.iface;
import cn.spring.face.Human;
public class American implements Human {
@Override
public void eat() {
System.out.println("美国人吃西餐...");
}
@Override
public void walk() {
System.out.println("美国人喜欢坐车...");
}
package cn.spring.test;
import cn.spring.face.Human;
import cn.spring.factory.HumanFactory;
import cn.spring.iface.American;
import cn.spring.iface.Chinese;
public class test1 {
public static void main(String[] args) {
Human chinese = new Chinese();
chinese.eat();
chinese.walk();
Human american = new American();
american.eat();
american.walk();
}
}
很明显,当有100个或者更多的中国人(美国人)时,我们需要一个一个创建其响应的实例,这样式很不合理的,所以我们加入“工厂类”,也就是将共同的特性提取出来,在使用时直接调用即可:
package cn.spring.factory;
import cn.spring.face.Human;
import cn.spring.iface.American;
import cn.spring.iface.Chinese;
public class HumanFactory {
public Human getHuman(String name){
if ("ch".equals(name)){
return new Chinese();
}else if ("am".equals(name)){
return new American();
}else {
throw new IllegalArgumentException("参数输入不正确!");
}
}
}
package cn.spring.test;
import cn.spring.face.Human;
import cn.spring.factory.HumanFactory;
import cn.spring.iface.American;
import cn.spring.iface.Chinese;
public class test {
public static void main(String[] args) {
HumanFactory humanFactory = new HumanFactory();
Human human = humanFactory.getHuman("ch");
human.eat();
}
}
|