Spring的注解简单介绍

SpringMVC的核心组件

DispatcherServlet—–>控制器,请求入口
HanderMapping———>控制器,请求派发
Controller————>控制器,请求处理流程
ModelAndView———->模型,封装业务处理结果和视图
ViewResolver———->视图,视图显示处理器

处理流程

浏览器向Spting发出请求,请求交给前端控制器DispatcherServlet处理。

控制器通过HanderMapping找到相应的Controller组件处理请求。

执行Controller组件约定的方法处理请求,在约定方法调用模型组件完成业务处理,约定方法可以返回一个ModelAndView对象,这个对象封装了业务处理结果数据和视图名称信息。

控制器接收ModelAndView之后,调用ViewResolver组件,定位View(JSP)并传递信息,生成响应界面结果。

注释配置相对于XML配置具有很多的优势:

它可以充分利用Java的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用JPA注释配置ORM映射时,我们就不需要指定PO的属性名、类型等信息,如果关系表字段和PO属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过Java反射机制获取。

注释和Java代码位于一个文件中,而XML配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java代码放在一起,有助于增强程序的内聚性。而采用独立的XML配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。

Controller组件

Controller组件负责执行具体的业务处理,编写时需要实现Controller接口及约定的方法。

ModelAndView组件

Controller约定组件中后会返回一个ModelAndView对象,这个对象封装了业务处理结果模型数据和视图信息。

ModelAndView构造器如下:

-ModelAndView(StringviewName)

-ModelAndView(StringviewName,Mapmodel)

其中viewName是jsp页面的名字,model的数据存储到request的attribute中

HanderMapping组件

通过HanderMapping组件,DispatcherServlet控制器可以将http请求映射到Controller组件上。

-SimpleUserHandlerMapping维持一个http请求和Controller映射关系(map)根据列表对应关系调用Controller.

SimpleUserHandlerMapping使用

<bean class="">
 <property name="mappings">
  <props>
   <prop key="/login.form">loginController</prop>
   <props >
  </prop key="/hello.form">helloController</prop>
 </property>
</bean>

<bean id="helloController" class="org.test.HelloController"/>

上面SimpleUserHandlerMapping标签中的helloController正对应着下面bean标签中id为helloController的组件。

RequestMappingHandlerMapping
ResquestMappingHandlerAdapter

在Controller类和方法上使用@ResquestMapping注解指定对应的客户http请求。

ViewResolver组件

所有Controller组件都返回一个ModelAndView实例,封装了视图名,Spring中的视图以名字为标识,视图解析器ViewResolver通过名字来解析视图。

InternalResourceViewResolver对Servlet和JSP的包装,使用示例:

<bean id="jspViewResolver" class="">
 <property name="prefix" value="/WEB-INF/jsp/"/>
 <property name="suffix" value=".jsp"/>
</bean>

比如:视图名hello通过上述配置可以映射到/WEB-INF/hello.jsp

Controller注解

我们一般使用@Controller注解声明Controller组件,这样便更加灵活,可以不用像前面那样实现Controller接口。

@Controller
public class HelloController{
 public String execute(){
  return "Hello";
 }
}

使用上面注解有个前提条件就是要开启注解扫描:

<context:component-scan base-package="org.test.controller">

base-package里面写的是Controller组件所在包。

ResquestMapping注解

ResquestMapping表明这个类或者方法与哪一个请求对应。

@Controller
@ResquestMapping("/test1")
public class HelloController{
 @ResquestMapping("/hello.form")
 public String helloExecute(){
  return "Hello";
 }
}

如果需要使用RequestMapping则需要在spring的XML配置文件里定义RequestMappingHandlerMapping(类定义前)和RequestMappingAdapter(方法定义前)两个bean组件,比如(sping3.1版本需要定义):

<bean class=".......RequestMappingMapping"/>
<bean class=".......RequestMappingAdapter"/>

spring3.2版本不需要定义了

<mvc:annotation-driven/>

总结

以上就是本文关于Spring的注解简单介绍的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • 浅谈spring 常用注解

    我们不妨先将spring常用的注解按照功能进行分类 1 .将普通类加入容器形成Bean的注解 日常开发中主要使用到的定义Bean的注解包括(XML方式配置bean暂不讨论): @Component.@Repository.@Service.@Controller.@Bean 其中@Component.@Repository.@Service.@Controller实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型.当一个组件代表数据访问层(Dao)时,你可以给它加上@Reposit

  • 利用注解配置Spring容器的方法

    本文介绍了利用注解配置Spring容器的方法,分享给大家,具体如下: @Configuration标注在类上,相当于将该类作为spring的xml的标签 @Configuration public class SpringConfiguration { public SpringConfiguration() { System.out.println("初始化Spring容器"); } } 主函数进行测试 public class Main { public static void m

  • spring-boot通过@Scheduled配置定时任务及定时任务@Scheduled注解的方法

    串行的定时任务 @Component public class ScheduledTimer { private Logger logger = Logger.getLogger(this.getClass()); /** * 定时任务,1分钟执行1次,更新潜在客户超时客户共享状态 */ @Scheduled(cron="0 0/1 8-20 * * ?") public void executeUpdateCuTask() { Thread current = Thread.curr

  • springmvc用于方法鉴权的注解拦截器的解决方案代码

    最近在用SpringMvc写项目的时候,遇到一个问题,就是方法的鉴权问题,这个问题弄了一天了终于解决了,下面看下解决方法 项目需求:需要鉴权的地方,我只需要打个标签即可,比如只有用户登录才可以进行的操作,一般情况下我们会在执行方法时先对用户的身份进项校验,这样无形中增加了非常大的工作量,重复造轮子,有了java注解只需要在需要鉴权的方法上面打个标签即可: 解决方案: 1.首先创建一个注解类: @Documented @Inherited @Target({ElementType.METHOD,E

  • Spring自动装配与扫描注解代码详解

    1 javabean的自动装配 自动注入,减少xml文件的配置信息. <?xml version="1.0" encoding="UTF-8"?> <!-- 到入xml文件的约束 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p&quo

  • 快速理解spring中的各种注解

    Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@Required, @Autowired, @PostConstruct, @PreDestory,还有Spring3.0开始支持的JSR-330标准javax.inject.*中的注解(@Inject, @Named, @Qualifier, @Provider, @Scope, @Singlet

  • Spring @Bean vs @Service注解区别

    今天跟同事讨论了一下在Spring Boot中,是使用@Configuration和@Bean的组合来创建Bean还是直接使用 @Service等注解放在类上的方式.笔者倾向于使用第一种,即@Configuration和@Bean的组合. 先来看一个例子,目标是创建SearchService的一个Bean. 直接使用@Service的方式: // SearchService.java package li.koly.search; import java.util.List; public in

  • Spring boot中PropertySource注解的使用方法详解

    前言 本文将重点讲解一下Spring中@PropertySource注解的使用,如何通过PropertySource注解加载指定的配置文件.以及PropertySource注解与@ConfigurationProperties两个注解的配合使用.下面话不多说了,来随着小编来一起学习学习吧. 1.1. PropertySource注解加载指定的属性文件 Spring框架提供了PropertySource注解,目的是加载指定的属性文件,接下来我们看一下如何使用该注解.首先我们定义一个配置类,并在类中

  • Spring的注解简单介绍

    SpringMVC的核心组件 DispatcherServlet-–>控制器,请求入口 HanderMapping--->控制器,请求派发 Controller---->控制器,请求处理流程 ModelAndView---->模型,封装业务处理结果和视图 ViewResolver---->视图,视图显示处理器 处理流程 浏览器向Spting发出请求,请求交给前端控制器DispatcherServlet处理. 控制器通过HanderMapping找到相应的Controller组

  • Spring IO Platform简单介绍

    Spring IO Platform框架简单来说就是一个版本号兼容系统,它将常用第三方类库的兼容的版本组织起来.只要我们在项目中引用了Spring IO Platform,就不需要为这些第三方类库设置版本号了,Spring IO Platform会自动帮我们设置所有兼容的版本号.本文参考自官方文档,如果需要查阅详细信息,请直接看原文即可. 引入类库 使用Maven 使用Maven的话,在pom.xml中修改为类似这样的. <?xml version="1.0" encoding=

  • Spring Cloud CLI简单介绍

    1.简介 在本文中,我们将介绍Spring Boot Cloud CLI(或简称Cloud CLI).该工具为Spring Boot CLI提供了一组命令行增强功能,有助于进一步抽象和简化Spring Cloud部署. CLI于2016年底推出,允许使用命令行..yml配置文件和Groovy脚本快速自动配置和部署标准Spring Cloud服务. 2.安装 Spring Boot Cloud CLI 1.3.x需要Spring Boot CLI 1.5.x,因此请务必从Maven Central

  • Apache shiro的简单介绍与使用教程(与spring整合使用)

    apache shiro框架简介 Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密.现在,使用Apache Shiro的人越来越多,因为它相当简单,相比比Spring Security,Shiro可能没有Spring Security那么多强大的功能,但是在实际工作时可能并不需要那么复杂的东西,所以使用简单的Shiro就足够了. 以下是你可以用 Apache Shiro所做的事情: Shiro的4大核心部分--身份验证,授权,会话管理

  • Spring缓存注解@Cacheable @CacheEvit @CachePut使用介绍

    目录 I. 项目环境 1. 项目依赖 II. 缓存注解介绍 1. @Cacheable 2. @CachePut 3. @CacheEvict 4. @Caching 5. 异常时,缓存会怎样? 6. 测试用例 7. 小结 III. 不能错过的源码和相关知识点 0. 项目 Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑的,本文将针对几个常用的注解进行简单的介绍说明,有需要的小伙伴可以尝试一下 本文主要知识点: @Cacheable: 缓存存在,则使用缓存:不存在

  • Spring 4.0新功能:@Conditional注解详细介绍

    前言 最近在学习spring,抽空会将学习的知识总结下面,本文我们会接触spring 4的新功能:@Conditional注解.在之前的spring版本中,你处理conditions只有以下两个方法: 在3.1版本之前,你需要使用spring expression language 在3.1版本发布时,profiles被引入来处理conditions. 让我们分别看看以上两者,在来理解spring 4带来的@Conditional注解. Spring Expression Language(SP

  • 详解spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子. 这有几个需要注意的地方 1.form的enctype="multipart/form-data" 这个是上传文件必须的 2.applicationContext.xml中 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 关于

  • Spring框架七大模块简单介绍

    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring框架的7个模块 组成 Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现.每个模块的功能如下: 1核心模块 SpringCore模块是Spring的核心容器,它实现了IOC模式,提供了Spring框架的基础功能.此模块中包含的BeanFactory类是Spring的

  • Spring基于注解整合Redis完整实例

    在<Redis之--Spring整合Redis>一文中,向大家介绍了如何将spring与Redis整合起来,但不是基于注解的形式,很多同学都希望能够通过注解的形式来简单的将Spring与Redis整合起来,这样,在使用的时候,只需要在相应的方法上加上注解,便可以使方法轻松的调用Redis的缓存.那么今天就来向大家介绍如何用基于注解的形式来整合Spring与Redis. 一.项目搭建 今天,我们不使用hibernate来操作数据库了,我们今天选择的框架是: Spring4(包括mvc.conte

  • Spring与Spring boot的区别介绍

    Spring Boot 简介 spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西.因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置.Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置.如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置.另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序. 本文给大家介绍Springbo

随机推荐