Spring简单的文件配置
Spring简单的文件配置
“计应134(实验班) 凌豪”
一、Spring文件配置
spring至关重要的一环就是装配,即配置文件的编写,接下来我按刚才实际过程中一步步简单讲解。
首先,要在web.xml中配置DispatcherServlet,它是作为Spring
MVC的前端控制器.必须在web.xml中配置好,如下:
|
<servlet> |
实际上,spring的配置文件可以分切到多个xml文件,我们这个简单的示例就把它配置到ntx.xml中
|
<?xml version="1.0" encoding="UTF-8"?> <beans <bean id="loginService" <bean <bean |
配置好上面的这些后,要在WEB-INF下要建立ntx-servlet.xml如下:
|
<?xml version="1.0" encoding="UTF-8"?> |
接下来,要指明哪些请求将交给spring的DispatcherServlet来处理,所以在web.xml中添加<servlet-mapping>
|
<servlet-mapping> |
为了能正确载入DispatcherServlet等配置文件,我们要在web.xml中配置一个上下文载入器ContextLoaderListener或者ContextLoaderServlet,我们这里为了兼容版本较低的Servlet容器(实际上我采用的2.4),采用第二种:
|
<servlet> |
这样就全部配置完毕了,当然,上面的ntx.xml是我在项目完成以后才配置完成的,这里不再多讲,有bean元素的配置大家可以参考有关资料理解,很容易理解的,下面再给出完整的web.xml配置以及java<?xml
version="1.0" encoding="UTF-8"?>
|
<web-app version="2.4" <context-param> |
根据ntx.xml知道,总共有三个java文件,LoginController.java是控制器,继承了最简单的Controller(实际上spring有很多控制器供我们选择),接下来是一个简单控制器的源码:
|
/** *//** import javax.servlet.http.HttpServletRequest; import org.springframework.web.servlet.ModelAndView; import ntx.service.LoginService; /** *//**@spring.bean id="loginController" /** *//** private LoginService loginService ; private void getUserInfo(HttpServletRequest request,String userName)...{ public String getGotoUrl() ...{ } |
还有service层的接口以及实现,较简单。
|
package ntx.service; import ntx.service.LoginService; public class LoginServiceImpl implements LoginService ...{ |
好了,最后是两个jsp文件,一个index.jsp用来显示一个表单,输入名字,一个showResult.jsp用来显示结果,只贴出相关的代码:
|
<body> <body> |
发布到tomcat或者其它Servlet容器可以正常使用,提交以后将显示:
This is
the Result:
你的名字是:gavin
这是一个简单的入门示例,希望有助于刚接触spring的人加深对spring的理解。
二、控制反转和依赖注入
控制反转(Ioc/Inverse
Of Control):调用者不再创建被调用者的实例,由Spring框架实现(容器创建)所以称为控制反转。
依赖注入(DI/Dependence
injection):容器创建好实例后再注入被调用者称为依赖注入。
当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例),被调者的协助时,在传统的程序设计中,通常由调用者来创建被调者的实例。如果创建调用者的实例的工作不再由调用者来完成,而是由外部容器完成,因此称为控制反转;创建被调者实例的工作通常由外部容器来完成,然后注入调用者,因此称为依赖注入
依赖注入的三种实现形式:
1.Type1-接口注入(Interface
Injection)
它是在一个接口中定义需要注入的信息,并通过接口完成注入。Apache Avalon是一个较为典型的Type1型IOC容器,WebWork框架的IoC容器也是Type1型。
当然,使用接口注入我们首先要定义一个接口,组件的注入将通过这个接口进行。我们还是以用户注册为例,我们开发一个InjectUserDao接口,它的用途是将一个UserDao实例注入到实现该接口的类中。InjectUserDao接口代码如下:
public interface InjectUserDao {
public void setUserDao(UserDao userDao);
}
UserRegister需要容器为它注入一个UserDao的实例,则它必须实现InjectUserDao接口。UserRegister部分代码如下:
public class UserRegister implements
InjectUserDao{
private UserDao userDao = null;//该对象实例由容器注入
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
// UserRegister的其它业务方法
}
同时,我们需要配置InjectUserDao接口和UserDao的实现类。如果使用WebWork框架则配置文件如下:
<component>
<scope>request</scope>
<class>com.dev.spring.simple.MemoryUserDao</class>
<enabler>com.dev.spring.simple.InjectUserDao</enabler>
</component>
这样,当IoC容器判断出UserRegister组件实现了InjectUserDao接口时,它就将MemoryUserDao实例注入到UserRegister组件中。
2.Type2-设值方法注入(Setter
Injection)
在各种类型的依赖注入模式中,设值注入模式在实际开发中得到了最广泛的应用(其中很大一部分得力于Spring框架的影响)。
基于设置模式的依赖注入机制更加直观、也更加自然。前面的用户注册示例,就是典
型的设置注入,即通过类的setter方法完成依赖关系的设置。
3.Type3-构造子注入(Constructor
Injection)
构造子注入,即通过构造函数完成依赖关系的设定。将用户注册示例该为构造子注入,UserRegister代码如下:
public class UserRegister {
private UserDao userDao =
null;//由容器通过构造函数注入的实例对象
public
UserRegister(UserDao userDao){
this.userDao =
userDao;
}
//业务方法
}
Spring简单的文件配置的更多相关文章
- spring 及 spring boot 资源文件配置
Spring配置文件引入xml文件: <import resource=" " />标签使用总结 https://www.cnblogs.com/javahr/p/83 ...
- Spring Boot属性文件配置文档(全部)
This sample file is meant as a guide only. Do not copy/paste the entire content into your applicatio ...
- nginx tar.gz安装方法+简单静态文件配置
1.首先安装依赖包(依赖包有点多,我们采用yum的方式来安装) yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel ...
- SSM框架中spring的XML文件配置
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...
- spring boot 日志文件配置(logback-spring.xml)亲测可用!
问题描述:如何配置springboot项目,通过日志配置,使之输出自定义日志. 详细文章:https://blog.csdn.net/gebitan505/article/details/701421 ...
- spring boot资源文件配置读取
一般业务配置,尽量新建自己的配置文件,来读取,而不是配置在application.properties或application-*.properties或yml/yaml配置中. applicatio ...
- Spring引用数据库文件配置数据源
例子:引用 druid.properties 在Spring配置文件(applicationContext.xml)引入外部配置文件,需要指定特定的 key才能被正确识别并使用 在原本的 url.us ...
- Spring的xml文件配置方式实现AOP
配置文件与注解方式的有很大不同,多了很多配置项. beans2.xml <?xml version="1.0" encoding="UTF-8"?> ...
- Spring(十二)使用Spring的xml文件配置方式实现AOP
配置文件与注解方式的有非常大不同,多了非常多配置项. beans2.xml <?xml version="1.0" encoding="UTF-8"? & ...
随机推荐
- JQuery EasyUi 扩展combox验证
随笔记录一下 1.通过select text的值验证 /** * 扩展combox验证,easyui原始只验证select text的值,不支持value验证() */ (function($){ c ...
- UITableView的分割线不满屏的解决方法
#pragma -mark 以下2个方法,解决分割线不满屏问题 -(void)viewDidLayoutSubviews { if ([tableView respondsToSelector:@se ...
- Python基础之 正则表达式指南
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...
- git使用前配置
1. git config --global user.name "Trey" 2. git config --global user.email 164355949@qq.com ...
- 浏览器加载模式:window.onload和$(document).ready()的区别(详解)
jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: wind ...
- Android dialog 不消失
最近在做Android4.0的开发,发现AlertDialog相比较以前有了较大变化,就是在触摸对话框边缘外部,对话框消失 于是研究其父类发现,可以设置这么一条属性,当然必须先AlertDialog. ...
- python计算md5值
from hashlib import md5 m = md5(') print m.hexdigest()
- ApiDemos示例学习(1)——ApiDemos示例的导入
---恢复内容开始--- 今天准备开始写这个ApiDemos示例的学习日记了,放在网上以监督自己! 首先是导入该示例.如果我们在配置Android开发环境是,利用Android SDK 安装包中的SD ...
- 在Word中为标题样式添加自动编号功能
原文地址:http://blog.chinaunix.net/uid-16685753-id-2738270.html 摘要: 本文可以帮助你在Office 2007中为Word标题样式添加和设置自动 ...
- SQL Server 获取服务器信息
最近做了一个小工具,里面涉及到一些取SQL Server 服务器信息的一些东西,找了好久,找到一个不错的,贴出来分享. 系统函数 SERVERPROPERTY ( propertyname ) 包含要 ...