一、spring配置问题
Spring配置过程中出错的问题:
首选导入spring包
后调试出现如下问题:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.springframework.beans.factory.support.AbstractBeanFactory.<init>(AbstractBeanFactory.java:72)
at org.springframework.beans.factory.support.ListableBeanFactoryImpl.<init>(ListableBeanFactoryImpl.java:100)
at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:130)
at org.robochina.spring.BeanFactoryWrapper.main(BeanFactoryWrapper.java:79)
Exception in thread "main"
出现该问题后,用了加了一个包之后该问题解决,该包如下:
如果没有以上该包,不论怎样配置,都会出现问题。
之后编写两种获得bean的方法,出现配置文件的两种存放位置
第一种情况:
Resource res = new FileSystemResource("hello.xml");
XmlBeanFactory factory = new XmlBeanFactory(res);
HelloTalker ht = (HelloTalker)factory.getBean("HelloTalker");
Hello.xml存放在该工程目录下
第二种情况:
ApplicationContext context = new ClassPathXmlApplicationContext("hello.xml");
HelloTalker ht=(HelloTalker)context.getBean("HelloTalker");
Hello.xml存放在src目录下。
这两种情况的问题存于,使用两种情况时xml文件的存放位置不同。
把struts导入到spring框架中的情况需要时,道先在web.xml中进行修改,使它满足struts的配置要求。之后配置struts-config.xml文件,对于这个文件的配置,大部分与单一的struts-config.xml配置相似。主要区别在于,在spring框架中,action-mappings元素
<action path="/login" type="org.springframework.web.struts.DelegatingActionProxy">中的type使用spring的代理,而在传统的struts中type值是直接的action,并在spring 框架下需要加入如下内容:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"><
set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
在spring框架下struts还要配置applicationContext.xml文件,
<bean name="/login" class="com.hollyinfo.spring.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
在上面的程序中,把userDAO注入到com.hollyinfo.spring.action.LoginAction中去!
二、spring中的相关概念
AOP的相关概念:
advice是你想向别的程序内部不同的地方注入的代码。
pointcut定义了需要注入advice的位置,通常是某个特定的类的一个public方法。
advisor是pointcut和advice的装配器,是将advice注入主程序中预定义位置的代码。
Advice通过实现MethodBeforeAdvice来实现代码!