本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工作;

废话不多说了上干货,其实我也没怎么理解不过简单的运行了一个spring mvc 全注解项目,也不能说是全注解,因为保留了web.xml和spring-serlvet.xml文件,(可能有的童鞋会说,这样配置可能对以后的修改不方便,无法达到只修改配置文件就切换某些环境。其实不是,零配置文件只是修改了类定义的配置,并没有修改之前配置文件的灵活性。我想无论谁也不会在之前的web.xml中去修改某个servlet的配置吧。况且这些所谓的配置文件灵活性,只是针对某个值,我们可以写在我们的properties文件里面,而且Spring对这类配置文件有很好的支持,而且使用很方便,有兴趣的童鞋可以去search一下。所以请打消这个配置不灵活的念头)。

首先我们看一下项目结构

项目采用maven管理,入门的同学应该都知道maven的优点,可以学习一下.

下面看一下核心的配置java类

 package cn.edu.lhs.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.UrlBasedViewResolver; @Configuration
@ComponentScan("cn.edu.lhs")
@EnableWebMvc
public class webConfig {
/**
* jsp视图解析器
*/
@Bean
public UrlBasedViewResolver setupviewResolver(){
UrlBasedViewResolver resilver=new UrlBasedViewResolver();
resilver.setPrefix("WEB-INF/views/");
resilver.setSuffix(".jsp");
resilver.setViewClass(JstlView.class);
return resilver; }
}

以上代码为配置spring-mvc.xml下的jsp视图解析的

让后就是去web.xml

package cn.edu.lhs.config;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic; import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
@ComponentScan("cn.edu.lhs")
public class webInitalizer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext)throws ServletException{
AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
ctx.register(webConfig.class);
ctx.setServletContext(servletContext);
Dynamic servlet=servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.addMapping("/");
servlet.setLoadOnStartup(1); } }

这里以webApplicationINitializer接口,利用AnnotationCOnfigwebApplicationCOntext 类

寄存器

public void register(Class <?> ... annotatedClasses)
注册要处理的一个或多个注释类。

请注意,AbstractApplicationContext.refresh()为了使上下文完全处理新类,必须调用它们。

指定者:
register 在界面 AnnotationConfigRegistry
参数:
annotatedClasses- 一个或多个注释类,例如@Configuration
也可以看看:
scan(String...), loadBeanDefinitions(DefaultListableBeanFactory)AbstractRefreshableConfigApplicationContext.setConfigLocation(String), AbstractApplicationContext.refresh()

注册配置类

现在就可以删除web.xml里的东西了

项目代码:https://github.com/tsxylhs/spring-mvc

java spring mvc 全注解的更多相关文章

  1. Spring MVC 全注解配置 (十一)

    完整的项目案例: springmvc.zip 目录 实例 项目结构: 父级的pom配置: <?xml version="1.0" encoding="UTF-8&q ...

  2. 基于spring mvc的注解DEMO完整例子

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件.本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mv ...

  3. spring mvc 基于注解的使用总结

    本文转自http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sprin ...

  4. spring mvc 基于注解 配置默认 handlermapping

    spring mvc 是类似于 Struts 的框架.他们都有一个最主要的功能就是URL路由.URL路由能将请求与响应请求处理逻辑的类(在Struts中即是action,在spring mvc 中即是 ...

  5. 支持Java Spring MVC

    Java Spring MVC能很方便在后台返回JSON数据,所以与MiniUI进行数据交互非常简单. 1)后台处理: 在MVC控制器中,可以通过方法参数接收数据,也可以通过Request接收更复杂的 ...

  6. Java spring mvc多数据源配置

    1.首先配置两个数据库<bean id="dataSourceA" class="org.apache.commons.dbcp.BasicDataSource&q ...

  7. Spring MVC学习总结(2)——Spring MVC常用注解说明

        使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02     之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...

  8. Spring框架 全注解annotation不使用配置文件(SpringConfiguration.java类代替) 补充 xml配置文件没有提示解决

    全注解不使用配置文件 首先还是倒包 在原有的jar包: 需Spring压缩包中的四个核心JAR包 beans .context.core 和expression 下载地址: https://pan.b ...

  9. springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来

    自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用 ...

随机推荐

  1. 2017-3-10 SQL server 数据库 T--SQL语句

    创建数据库:create datebase  数据库名     注:数据库名不能为中文,不能数字开头,不能符号开头. 删除数据库:drop datebase 数据库名 创建表:create   tab ...

  2. noscript 标签,一个被忽视的重要标签

    打开 Drupal 的新后台,发现显示大面积空白 .本以为是 CSS 的问题,后来折腾好久才发现是我之前因为某些站的安全问题把浏览器的 Javascript 给禁用了.Javascript 的日益强大 ...

  3. 1724: [Usaco2006 Nov]Fence Repair 切割木板

    1724: [Usaco2006 Nov]Fence Repair 切割木板 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 854  Solved: 42 ...

  4. nodejs学习一

    总觉得一个前端,不懂得一点后端的服务,弱弱的没有存在感,所以利用现在好好 学学有关nodejs 首先是windows上进行nodejs的全局安装 32 位安装包下载地址 : https://nodej ...

  5. Oracle-orclEXORIM

    imp pzhdb/hiway@orcl file =d:\pzhsd.dmp fromuser = pzhsd touser=pzhdb:导入 第一个pzhdb为新的用户名 hiway为密码 orc ...

  6. 基础篇系列,JAVA的并发包 - 锁

    JAVA中主要锁 synchronized Reentrantlock ReentrantReadWriteLock 问题引入 为什么需要锁? 为什么JAVA有了synchronize还需要Reent ...

  7. 将两个列不同的DataTable合并成一个新的DataTable

    /// <summary>         /// 将两个列不同(结构不同)的DataTable合并成一个新的DataTable         /// </summary> ...

  8. okhttp +fastJson 在UI层的回调封装

    一直使用OkHttp 经常烦人的地方是回调方法  数据解析后必须通过handler 在主线程做操作 网上找了很多资料 发现有些都是基于Gson做的解析 fastJson 在封装时 泛型传入会有很多不方 ...

  9. 谈谈Backbone.js中的el

    小编最近开始接触backbone.js,这个曾经非常优秀的一款MVC前端框架,在学习的过程中,遇到下图的这样一个问题 下面上代码 小编的想法很简单,只是view了一个实例,然后在initalize中调 ...

  10. JS中new的自定义实现创建实例对象

    我们都知道在JS中通常通过对象字面量和new关键字来创建对象,那么今天我就来给大家讲讲new是怎么创建实例对象的:首先创建一个构造函数: function Person(name,age){ this ...