标签:ram 配置文件 mil .com 4.0 class 定位 9.png font
spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用。
spring中有三种注入方式,一种是set注入,一种是接口注入,另一种是构造方法注入。
spring.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" xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <!-- 以上为头文件,必须在eclipse的xml catalog里有相应xsd文件, 有了头文件之后会有提示--> <bean class="test.Man" name="man"></bean> <!-- 创建test包里的Man类的对象,对象名为man --> </beans>
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Test { public static void main(String[] args) { Test test=new Test(); test.one(); test.two(); test.three(); } /** * 普通模式:哪里需要对象,就在哪个方法里new 一个类的对象然后是用。 * 存在的不足:如果有很多个类都使用一个对象,而这个对象改变了的话,就需要在很多个类里修改这个对象。 */ private void one() { PersonI man=new Man(); man.eat(); man.sleep(); } /** * 设计模式(工厂模式、门面模式): * ,优势:如果PersonI的实现类修改了,只要在工厂PersonFactory中修改相应的类即可,而这里无须修改。 */ private void two() { PersonI woman=PersonFactory.getWomen(); //工厂模式 ,优势:如果PersonI的实现类修改了,只要在工厂PersonFactory中修改相应的类即可,而这里无须修改。 woman.eat(); woman.sleep(); } /** * spring的ioc模式,将对象的实例化交给spring框架(spring容器) */ private void three() { /** * 这里的Man对象是在spring.xml中创建(new)好了 */ // ApplicationContext applicationContext=new FileSystemXmlApplicationContext("src/spring.xml"); //推荐使用new ClassPathXmlApplicationContext ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml"); Man man=(Man)applicationContext.getBean("man"); //getBean("man")里的man是spring.xml文件里的id或者name为man的bean man.sleep(); man.eat(); } }
package test; /** * 工厂模式, * @author Administrator * */ public class PersonFactory { public static PersonI getMan(){ PersonI man=new Man(); return man; } public static PersonI getWomen(){ PersonI women=new Women(); return women; } }
package test; public interface PersonI { void eat(); void sleep(); } class Man implements PersonI{ public void eat() { System.out.println("Man 中的eat方法"); } public void sleep() { System.out.println("Man 中的sleep方法"); } } class Women implements PersonI{ public void eat() { System.out.println("Women 中的eat方法"); } public void sleep() { System.out.println("Women 中的sleep方法"); } }
结果:
aop就是纵向的编程,如下图所示,业务1和业务2都需要一个共同的操作,与其往每个业务中都添加同样的代码,不如写一遍代码,让两个业务共同使用这段代码。
spring中面向切面变成的实现有两种方式,一种是动态代理,一种是CGLIB,动态代理必须要提供接口,而CGLIB实现是有继承。
标签:ram 配置文件 mil .com 4.0 class 定位 9.png font
原文地址:http://www.cnblogs.com/shyroke/p/6699072.html