1. controller 使用与解释

使用 @Controller 之后,则该对象交给 Spring 管理, 同时生成一个驼峰命名 standardController 的 bean。这个命名根据 StandardController 的类名获得。

如果使用写法右侧的写法:@Controller("standardController") || @Controller(name = "standardController") 则 bean 的名称取 「“”」里的值

@Scope("prototype")表示:非单例模式, 每次请求都将单独建立一个 StandardController 对象可以保证线程(影响数据)相对安全

若不使用该注释,则表示:scope 是单例模式(scope="singleton"), 只会创建一个StandardController 对象, 每次访问都是同一 StandardController 对象, 线程(影响数据)不安全

package com.qs.controller;

import com.qs.entity.CategoryFilter;

import com.qs.service.ICategoryFilterService;

import com.qs.service.impl.CategoryFilterServiceImpl;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.*;

import org.springframework.ui.Model;

import javax.annotation.Resource;

import java.util.HashMap;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

@Controller

@Scope("prototype")

public class StandardController

{

//建议使用@Resource(低耦合), 不推荐 @Autowired(该注释方法侵入性强)

@Resource(name = "iCategoryFilterService")

ICategoryFilterService iCategoryFilterService;

@RequestMapping(value = "/get/all", method = RequestMethod.GET)

//使用 @ResponseBody 可以将 Map 以流的方式在浏览器中直接显示出来

@ResponseBody

public Map getAll(Model model)

{

List list = iCategoryFilterService.getAll();

Map map = new HashMap();

map.put("1",list);

return map;

}

}

如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常;

如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常;

如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;

如果既没有指定name,又没有指定type,则自动按照byName方式进行装配(参照2);如果没有匹配,则回退为一个原始类型(UserDao)进行匹配,如果匹配则自动装配;

@Resource(name = "iCategoryFilterService"):在 StandardController 声明的 iCategoryFilterService 类型必须是  ICategoryFilterService 或者 ICategoryFilterServiceImpl ,否则会由于类型不一致而无法注入。

程序中使用了 @@Resource(name = "iCategoryFilterService"), 装配流程如下:

Spring 实例化一个名为 iCategoryFilterService 的bean;

当 Spring 发现 StandardController 的成员变量 iCategoryFilterService 上有 @Resource 注释时;

Spring 会把名为 iCategoryFilterService 的bean 注入给 iCategoryFilterService 这个成员变量,完成依赖注入;

PS. 如果没有 Spring 还像使用 iCategoryFilterService 这个成员变量的做法则是传统的new方法。ICategoryFilterService iCategoryFilterService = new ICategoryFilterServiceImpl();

Spring 的依赖注入完成了 IoC(控制反转)的过程,在这里控制反转的意思指的是:

StandardController 想使用成员变量 iCategoryFilterService , 本应该去主动 new 出对象;

使用 Spring 之后, 创建实力的工作已经交给 Spring , 而真正使用者(StandardController)则需要让 Spring 把已经实例化完成成员变量(iCategoryFilterService)交给自己使用;

依赖注入(DI)和控制反转(IoC)其实是要表达的是一个意思, 但是个人感觉依赖注入(DI)更为准确的概括了上述过程。

java瞳孔识别_SpringMVC 注解说明和使用相关推荐

  1. java 中的 Annotation 注解学习笔记

    java 中的 Annotation 注解 什么是注解 元注解 @Target @Retention @Document @Inherited 自定义注解 什么是注解 Annotation 是从JDK ...

  2. java method 注释_Java注解

    Java注解 注解概述 3.注解 3.1.注解,或者叫做注释类型,英文单词是:Annotation 疑问:注解到底是干啥的????????? 3.2.注解Annotation是一种引用数据类型.编译之 ...

  3. 学妹问我Java枚举类与注解,我直接用这个搞定她!

    很多人问我学妹长什么样,不多说 上图吧! 学妹问我Java枚举类与注解,我直接一篇文章搞定! 一.枚举类 ① 自定义枚举类 ② enum关键字定义枚举类 ③ enum 枚举类的方法 ④ enum 枚举 ...

  4. java代码识别_识别Java中的代码气味

    java代码识别 作为软件开发人员,我们不仅要编写有效的代码,而且还要编写可维护的代码,这是我们的责任. Martin Fowler在他的<重构:改进现有代码的设计>中将代码气味定义为: ...

  5. java运行时读取注解_Java自定义注解和运行时靠反射获取注解

    转:1.Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型.该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰 ...

  6. Java 使用反射处理注解

    Java 使用反射处理注解 自定义注解的格式: [public|final] @interface 注解名//@interface 表明:这是一个自定义注解 {注解元素//注解元素 是无参数的方法 } ...

  7. Java知识点总结(注解-内置注解)

    Java知识点总结(注解-内置注解) @(Java知识点总结)[Java, 注解] @Override 定义在java.lang.Override 中,此注释只适用于修饰方法,表示一个方法声明打算重写 ...

  8. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    1.Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型.该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰的c ...

  9. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

最新文章

  1. CentOS7.5 -- Ansible部署与应用
  2. linux tar命令 打包 解压
  3. Springboot中使用Google 的Kaptcha工具实现验证码校验
  4. apache php日志配置,如何设置apache每天保存日志
  5. 提取多个字段_动态合并多个工作表,数据再多也不怕
  6. 使用DataX从ORACLE同步数据到MYSQL
  7. py 的 第 19 天
  8. golang MySQL 占内存_使用golang插入mysql性能提升經驗
  9. java翻译数字串并打印_如何使用Java翻译字符串?
  10. java调用短信接口使用实例
  11. php 判断是否ipv6,PHP IPV6正则表达式验证代码
  12. 常见网络协议端口号整理
  13. ffmpeg海康SDK流接入的支持
  14. Photoshop中预设资源安装方式-笔刷、动作、渐变、形状、样式等
  15. ocr文字识别html,在线OCR 随时随地轻松搞定文字识别
  16. 【吴恩达deeplearning.ai】Course 5 - 2.10 词嵌入除偏
  17. 云等保安全合规解决方案
  18. android surfaceview 背景颜色,android – 设置Surface View的背景颜色
  19. PL0功能扩充(浮点数,数组,数组加减乘除等)
  20. python怎么算一元二次方程_python如何解一元二次方程

热门文章

  1. 用ps来画国画,你会吗???
  2. 生病期间学Python<第一天>
  3. 放开那三国服务器维修,放开那三国9月25日部分服务器数据互通公告
  4. 47 岁从华为退休,操作系统老兵转战 OpenHarmony 生态 | 近匠
  5. 推荐一个无缝背景花纹资源站-AVA7 PATTERNS
  6. web微信(不是微信网页版)干啥用的?
  7. 计算机视觉应用-圆或者圆点检测
  8. 怪异报错:Wrong number of type arguments
  9. 华为路由器静态路由和ospf动态路由配置
  10. Java实现防重复提交