1 简单的配置. Spring的应用很简单,如果不需要要用到AOP,只要下面三个包就足够了:
commons-logging-api-1.1.jar
spring.jar
springside3-core-3.3.4.jar
如果用到AOP,还需要加上:
asm.jar
aspectjweaver.jar
cglib-2.1.3.jar
下面是简单的一个配置,加入了AOP支持。
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 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.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" default-autowire="byName"> <!-- 搜索@Component, @Service, @Repository, @Controller --> <context:component-scan base-package="sa.framework.spring.test"> <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/> </context:component-scan> <!-- 启动AspectJ支持,这样才能让切面起效--> <aop:aspectj-autoproxy/> <!-- 进行bean的配置 scope=prototype是指每次getBean会得到一个新的实例,默认是单例 --> <bean id="people1" class="sa.framework.spring.test.bean.People" scope="prototype"> <property name="name" value="Chinese"></property> </bean> <bean id="people2" class="sa.framework.spring.test.bean.People"> <property name="name" value="American"></property> </bean> <!-- --> <bean id="myPostProcessor" class="sa.framework.spring.test.beanprocessor.MyBeanPostProcessor"></bean> </beans>
?
在程序中要使用Spring配置的的bean,只要
BeanFactory ctx = new ClassPathXmlApplicationContext("classpath*:applicationContext.xml");//使用项目src路径下的配置文件
People p = (People)ctx.getBean("people2");
?
?
2. IOC的原理按照我的理解就是将系统的一些Bean(程序的素材)以配置的形式,交给Spring容器进行初始化,并交给Spring容器进行管理(建立、销毁、保存等)。其实现的原理无非就是利用JAVA的反射和注入的功能,进行对象的动态生成以及参数设置。
?
3. 关于容器:Spring的容器都是通过BeanFactory接口衍生出来。一般都是用ApplicationContext来进行应用。具体的实现类使用
ClassPathXmlApplicationContext(“配置文件路径”);//配置文件在src下
FileSystemXmlApplicationContext(“配置文件路径”);//配置文件的路径使用系统路径
?
?
?
?