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"? & ...
随机推荐
- Google Map 根据坐标 获取地址信息
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...
- easyui combo自动高度(下拉框空白问题)
设置.combo-panel {max-height:200px;} 在用到easyui-combobox时,设置panelHeight:'auto'
- JavaScript中的this引用
在JavaScript的学习当中,this关键字的出现频率可不低,所以想想有必要对this关键字做一个总结.在总结过程中,参考的资料来源于书本及网上. 一.定义 1.this是函数内部的一个特殊对象( ...
- HDU 1017 - A Mathematical Curiosity
题目简单,格式酸爽.. #include <iostream> using namespace std; int ans,n,m,p; int main() { cin>>p; ...
- C语言的ELF文件格式学习
最近的lab里面有ELF文件相关的,所以成这个几乎,学点ELF的东西. ELF,是一种文件格式.暂时,只看可执行文件的ELF文件格式. 首先,给出文件的格式的布局图: 光看这个很难理解,所以写一个小的 ...
- js & jq 加载js
最近做项目中, 经常要写js代码的, 从纯前端人员, 到我们这边的过度, 每个人写的风格都不一样, 大概整理了一下有这么几种 1.1 $(document).ready(function(){}); ...
- ubuntu mysql编码设置5.5以后
安装了mysql. 版本:5.5.28 操作系统 :ubuntu 12.10 mysql> show variables like 'character%'; +---------------- ...
- solaris11.2下编译QT-配置命令
1.make 版本为:GNU Make 3.82 2.gcc版本是:3.4.3(pkg install ...) 2.直接./configue是不行的 解决:./configue -platform ...
- python学习day2(一)
一.上周作业回顾 1.登陆接口: 思路流程: 1.登陆,三次锁定用户 2.用户信息文件,黑名单文件 3.检测黑名单,如输入账号在黑名单中存在,不允许登陆 4.用户密码判断 主要知识点:while,fo ...
- Keil MDK中使用pc-lint的详细方法
keil MDK版本:V4.03 PC-lint版本: V8.0 关于pc-lint的强大作用,网上有很多,这里不想再复述,只说一句:能通过pc-lint检验的程序不一定没有问题,但通过了pc-li ...