收藏 分享(赏)

spring常用注解.doc

上传人:精品资料 文档编号:9983224 上传时间:2019-09-24 格式:DOC 页数:17 大小:24.94KB
下载 相关 举报
spring常用注解.doc_第1页
第1页 / 共17页
spring常用注解.doc_第2页
第2页 / 共17页
spring常用注解.doc_第3页
第3页 / 共17页
spring常用注解.doc_第4页
第4页 / 共17页
spring常用注解.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、Spring4.1.6 常用注解ControllerServiceAutowiredRequestMappingRequestParamModelAttributeCacheableCacheFlushResourcePostConstructPreDestroyRepositoryComponent (不推荐使用)ScopeSessionAttributesInitBinderRequiredQualifierController 例如Controllerpublic class SoftCreateController extends SimpleBaseController 或者Cont

2、roller(“userController“) 说明Controller 负责注册一个 bean 到 spring 上下文中,bean 的 ID 默认为类名称开头字母小写 Service 例如Servicepublic class SoftCreateServiceImpl implements ISoftCreateService 或者Service(“softCreateServiceImpl“) 说明Service 负责注册一个 bean 到 spring 上下文中,bean 的 ID 默认为类名称开头字母小写Autowired 例如Autowiredprivate ISoftPMSe

3、rvice softPMService; 或者Autowired(required=false)private ISoftPMService softPMService = new SoftPMServiceImpl(); 说明Autowired 根据 bean 类型从 spring 上线文中进行查找,注册类型必须唯一,否则报异常。 与Resource 的区别在于,Resource 允许通过 bean 名称或 bean 类型两种方式进行查找Autowired(required=false) 表示,如果 spring 上下文中没有找到该类型的bean 时, 才会使用 new SoftPMServ

4、iceImpl();Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会将容器中所有类型符合 Map 的 value 对应的类型的 Bean 增加进来,用 Bean 的 id 或 name 作为 Map 的 key。Autowired 还有一个作用就是,如果将其 标注在 BeanFactory 类型、ApplicationContext 类型、 ResourceLoader 类型、ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额

5、外的操作。RequestMapping 类ControllerRequestMapping(“/bbtForum.do“) copyright public class BbtForumController RequestMapping(params = “method=listBoardTopic“)public String listBoardTopic(int topicId,User user) 方法RequestMapping(“/softpg/downSoftPg.do“)RequestMapping(value=“/softpg/ajaxLoadSoftId.do“,metho

6、d = POST)RequestMapping(value = “/osu/product/detail.do“, params = “modify=false“ , method =POST) 说明RequestMapping 可以声明到 类或方法上 参数绑 定说明如果我们使用以下的 URL 请求:http:/localhost/itxxzSpring4?method=listBoardTopicmodel.addAttribute(owner);return “ownerForm“;对应的逻辑视图名为 “ ownerForm ” org.springframework.ui.ModelMa

7、p和返回类型为 void 一样,逻辑视图名取决于对应请求的 URL ,如下面的例子:RequestMapping(“/vets.do“)public ModelMap vetsHandler() return new ModelMap(this.clinic.getVets();对应的逻辑视图名为 “ vets ” ,返回的 ModelMap 将被作为请求对应的模型对象,可以在 JSP 视图页 面中访问到。 ModelAndView当然还可以是传统的 ModelAndView 。ModelAttribute 作用域: request 例如RequestMapping(“/base/userMa

8、nageCooper/init.do“)public String handleInit(ModelAttribute(“queryBean“) ManagedUser sUser,Model model,) 或者ModelAttribute(“coopMap“)/ 将 coopMap 返回到页 面public Map coopMapItems() 说明ModelAttribute 声明在属性上,表示该属性的 value 来源于 model 里“queryBean“ ,并被保存到 model 里ModelAttribute 声明在方法上,表示该方法的返回值被保存到 model 里 Cachea

9、ble 和CacheFlush Cacheable :声明一个方法的返回值应该被缓 存例如:Cacheable(modelId = “testCaching“) CacheFlush :声明一个方法是清空缓存的触发器例如:CacheFlush(modelId = “testCaching“) 说明要配合缓存处理器使用Resource 例如Resourceprivate DataSource dataSource; / inject the bean named dataSource 或者Resource(name=“dataSource“)Resource(type=DataSource.cl

10、ass) 说明Resource 默认按 bean 的 name 进行查找,如果没有找到会按 type 进行查找, 此时与Autowired 类 似.在没有为 Resource 注解显式指定 name 属性的前提下,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。此时 name 属性不需要指定 ( 或者指定为“),否则注入失败;PostConstruct 和Pr

11、eDestroy PostConstruct在方法上加上注解PostConstruct ,这个方法就会在 Bean 初始化之后被 Spring 容器执 行(注:Bean 初始化包括, 实 例化 Bean ,并装配 Bean 的属性(依赖注入)。 PreDestroy在方法上加上注解PreDestroy ,这个方法就会在 Bean 被销毁前被 Spring 容器执行。Repository 与Controller 、Service 类似,都是向 spring 上下文中注册 bean ,不在赘述。Component (不推荐使用)Component 是所有受 Spring 管理组件的通用形式, Sp

12、ring 还提供了更加细化的注解形式: Repository 、 Service 、Controller ,它们分别对应存储层 Bean ,业务层 Bean ,和展示层 Bean 。目前版本(2.5 )中,这些注解与 Component 的 语义是一样的,完全通用, 在Spring 以后的版本中可能会给它们追加更多的语义。 所以,我们推荐使用Repository 、Service 、Controller 来替代Component 。Scope 例如Scope(“session“)Repository()public class UserSessionBean implementsSeriali

13、zable 说明在使用 XML 定义 Bean 时,可以通过 bean 的 scope 属性来定义一个 Bean 的作用范围,同样可以通过Scope 注解来完成Scope 中可以指定如下值:singleton:定义 bean 的范围为每个 spring 容器一个实例(默认值)prototype:定义 bean 可以被多次实例化(使用一次就创建一次)request:定义 bean 的范围是 http 请求(springMVC 中有效)session:定义 bean 的范围是 http 会话(springMVC 中有效)global-session:定义 bean 的范围是全局 http 会话(p

14、ortlet 中有效) SessionAttributes 说明Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能 访问到这些属性。这一功能是通过类定义处标注 SessionAttributes 注解来实现的。SessionAttributes 只能声明在类上,而不能声明在方法上。 例如SessionAttributes(“currUser“) / 将 ModelMap 中属性名 为 currUser 的属性SessionAttributes(“attr1“,“attr2“)Session

15、Attributes(types = User.class)SessionAttributes(types = User.class,Dept.class)SessionAttributes(types = User.class,Dept.class,value=“attr1“,“attr2“)InitBinder 说明如果希望某个属性编辑器仅作用于特定的 Controller ,可以在 Controller 中定义一个标注 InitBinder 注解的方法,可以在该方法中向 Controller 了注册若干个属性编辑器 例如InitBinderpublic void initBinder(W

16、ebDataBinder binder) SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd“);dateFormat.setLenient(false);binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false);Required 例如required public setName(String name) 说明 required 负责检查一个 bean 在初始化时其声明的 set 方法是否被执行, 当某个被标注了 Re

17、quired 的 Setter 方法没有被调用,则 Spring 在解析的时候会抛出异常,以提醒开发者对相应属性进行设置。 Required 注解只能标注在 Setter 方法之上。因为依赖注入的本质是检查 Setter 方法是否被调用了,而不是真的去检查属性是否赋值了以及赋了什么样的值。如果将该注解标注在非 setXxxx() 类型的方法则被忽略。Qualifier 例如AutowiredQualifier(“softService“)private ISoftPMService softPMService; 说明使用Autowired 时,如果找到多个同一类型的 bean,则会抛异常,此时可以使用 Qualifier(“beanName“),明确指定 bean 的名称进行注入,此时与 Resource 指定name 属性作用相同。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报