如何为java工程添加spring

如何为java工程添加spring,第1张

1、下载Spring的jar包,打开lib目录下,把需要的jar包复制到,项目工程WebRoot或WebContent下的WEB-INF/lib下。

2、项目名右键->MyEclipse->Add Spring Capabilities

比较建议第一种

1.我觉得dao层定义接口意义不大!

2.spring将你的dao注入容器里面了,这个dao默认的是单例的,也就是说,每次spring都得到的是同一个dao对象。如果你不设置lazy的话,在web容器启动的时候,spring就会对dao对象初始化。

3.首先,你要在action中注入TestServiceImpl,action中需要有setTestService方法(或者注解方式)注入接口,spring通过jdk的动态代理去调用相对应的实现方法。service中同样需要注入TestDAOImpl

并在service中生存setTestDAO(或者注解方式)注入接口,然后调用接口的方法。这个与action调用service相同!

前段时间在公司做了一个项目,项目用了spring框架实现,WEB容器是Tomct 5,虽然说把项目做完了,但是一直对spring的IoC容器在web容器如何启动和起作用的并不清楚。所以就抽时间看一下spring的源代码,借此了解它的原理。

我们知道,对于使用Spring的web应用,无须手动创建Spring容器,而是通过配置文件,声明式的创建Spring容器。因此在Web应用中创建Spring容器有如下两种方式:

1. 直接在web.xml文件中配置创建Spring容器。

2. 利用第三方MVC框架的扩展点,创建Spring容器。

其实第一种方式是更加常见。为了让Spring容器随Web应用的启动而启动,有如下两种方式:

1. 利用ServletContextListener实现。

2. 利用load-on-startup Servlet实现。

Spring提供ServletContextListener的一个实现类ContextLoaderListener,该类可以作为Listener 使用,它会在创建时自动查找WEB-INF下的applicationContext.xml文件,因此,如果只有一个配置文件,并且文件名为applicationContext.xml,则只需在web.xml文件中增加以下配置片段就可以了。

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

如果有多个配置文件需要载入,则考虑使用<context-param...>元素来确定配置文件的文件名。ContextLoaderListener加载时,会查找名为contentConfigLocation的初始化参数。因此,配置<context-param...>时就指定参数名为contextConfigLocation。

带多个配置文件的web.xml文件如下:

<context-param>

<param-name>contextLoaderListener</param-name>

<param-value>

WEB-INF/*.xml, classpath:spring/*.xml

</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

多个配置文件之间用“,”隔开。

下面我们来看它的具体实现过程是怎样的,首先我们从ContextLoaderListener入手,它的代码如下:

public class ContextLoaderListener implements ServletContextListener

{

private ContextLoader contextLoader

/**

* 这个方法就是用来初始化web application context的

*/

public void contextInitialized(ServletContextEvent event)

{

this.contextLoader = createContextLoader()

this.contextLoader.initWebApplicationContext(event.getServletContext())

}

/**

* 创建一个contextLoader.

* @return the new ContextLoader

*/

protected ContextLoader createContextLoader()

{

return new ContextLoader()

}

................

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11630836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存