Spring注释(Spring Annotations)

原文链接:http://www.8qiu.cn/archives/1172

Annotation Package Detail/Import statement
@Service import org.springframework.stereotype.Service;
@Repository import org.springframework.stereotype.Repository;
@Component import org.springframework.stereotype.Component;
@Autowired import org.springframework.beans.factory.annotation.Autowired;
@Transactional import org.springframework.transaction.annotation.Transactional;
@Scope import org.springframework.context.annotation.Scope;
Spring MVC Annotations
@Controller import org.springframework.stereotype.Controller;
@RequestMapping import org.springframework.web.bind.annotation.RequestMapping;
@PathVariable import org.springframework.web.bind.annotation.PathVariable;
@RequestParam import org.springframework.web.bind.annotation.RequestParam;
@ModelAttribute import org.springframework.web.bind.annotation.ModelAttribute;
@SessionAttributes import org.springframework.web.bind.annotation.SessionAttributes;
Spring Security Annotations
@PreAuthorize import org.springframework.security.access.prepost.PreAuthorize;

@Service、@Repository、@Controller、@Component

@Service、@Repository、@Controller、@Component 这四个都是用来注解spring的bean,站在程序的角度它们都是等效。但从名字上,我们很容易看出@Service是注解业务层的bean – Service,@Repository是注解持久层的bean – Dao,@Controller是注解MVC的Controller,@Component 用来注解普通的bean,当这个bean不好归类的时候,就用@Component。

@Autowired

自动注入值,如下自动注入companyDAO。前提你要保证companyDAO存在spring的context里。

@Servicepublic class CompanyServiceImpl implements CompanyService {@Autowired

private CompanyDAO companyDAO;

}

@Transactional

添加@Transactional到某个Service类上,说明该Service的所有方法都支持事务管理,若在某个方法上添加@Transactional,只声明该方法支持事务。当支持事务的方法开始执行前都会先打开一个事务,碰到异常时就会回滚。Spring的默认配置是碰到RunTimeException时才会进行事务回滚。

@Scope

对应<bean scope=”prototype”/>里的scope,它的值有singleton、prototype、request,session,global session和自定义模式。

@RequestMapping

在类或方法上面使用此注解,设置URL访问地址。它有两个属性,value指定访问路径,method指定指定请求方式,请求方式在RequestMethod这个类中,全部以常量形式定义,它默认使用GET请求。它也可以只指定访问路径,如下所示

如下{context.path}/comany/addCompany 映射到addCompany方法。

@Controller

@RequestMapping("/company")

public class CompanyController {

  @Autowired

  private CompanyService companyService;

@RequestMapping("/addCompany")

public ModelAndView addCompany(Company c){

….

}

}

@PathVariable

获取URL访问路径变量。在下面的例子里,访问路径是/company/techferry,companyName获取到的值就是techferry。

@Controller

@RequestMapping("/company")

public class CompanyController {

  @Autowired

  private CompanyService companyService;

  @RequestMapping("{companyName}")

  public String getCompany(Map<String, Object> map, @PathVariable String companyName) {

    Company company = companyService.findByName(companyName);

    map.put("company", company);

    return "company";

  }

  ...

}

@RequestParam

把URL上的参数绑定到Controller方法上的参数,pageNum的值就是来源于request.getParameter(“pageNum”)。

@[email protected](“/company”)public class CompanyController {@Autowired

private CompanyService companyService;

@RequestMapping(“/companyList”)

public String listCompanies(Map<String, Object> map, @RequestParam int pageNum) {

map.put(“pageNum”, pageNum);

map.put(“companyList”, companyService.listCompanies(pageNum));

return “companyList”;

}

}

@ModelAttribute

当参数很多的时候,直接定义在方法上,方法的代码会很长,非常丑陋。通常的做法是定义一个formbean,然后在formbean前使用@ModelAttribute注解。Spring MVC会自动把URL的参数根据匹配的字段名一个一个的设置到formbean里。

@Controller

@RequestMapping("/company")

public class CompanyController {

  @Autowired

  private CompanyService companyService;

  @RequestMapping("/add")

  public String saveNewCompany(@ModelAttribute Company company) {

    companyService.add(company);

    return "redirect:" + company.getName();

  }

...

}

@SessionAttributes

声明一个变量,存放在session里,多个请求之间可以共享操作这个变量。

@PreAuthorize

权限验证

如下例子,只有用户的role包含“ROLE_ADMIN”才可以删除Contact。

@Transactional

@PreAuthorize("hasRole(‘ROLE_ADMIN‘)")

public void removeContact(Integer id) {

  contactDAO.removeContact(id);

}

时间: 2024-11-13 04:01:43

Spring注释(Spring Annotations)的相关文章

每个Java开发人员都应该知道的4个Spring注释

这是每个Java开发人员都应该知道的最重要的Spring注解.感谢优锐课老师对本文提供的一些帮助. 随着越来越多的功能被打包到单个应用程序或一组应用程序中,现代应用程序的复杂性从未停止增长.尽管这种增长带来了一些惊人的好处,例如丰富的功能和令人印象深刻的多功能性,但它要求开发人员使用越来越多的范例和库.为了减少开发人员的工作量以及开发人员必须记住的信息量,许多Java框架都转向了注解. 特别是Spring,它以注解的使用而闻名,它使开发人员仅用少数几个注解就可以创建完整的表示状态转移(REST)

Spring 注释 @Autowired 和@Resource 的区别

Spring 注释 @Autowired 和@Resource 的区别 一. @Autowired和@Resource都可以用来装配bean,都可以写在字段上,或者方法上. 二. @Autowired属于Spring的:@Resource为JSR-250标准的注释,属于J2EE的. 三. @Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,例如:@Autowired(required=false) ,如果我们

How to configure spring boot through annotations in order to have something similar to &lt;jsp-config&gt; in web.xml?

JSP file not rendering in Spring Boot web application You will need not one but two dependencies (jasper and jstl) in your pom.xml for this to work. <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifa

Maven+Spring MVC Spring Mybatis配置

环境: Eclipse Neon 先决条件: Eclipse先用maven向导创建web工程.参见本站之前随笔. 本机安装完成mysql5:新建用户xuxy03设置为DB Manager角色:新建数据库genubi,新建一个示例表user_info_t.运行SQL: DROP TABLE IF EXISTS `user_info_t`; CREATE TABLE `user_info_t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` v

spring、spring mvc、mybatis框架整合基本知识

学习了一个多月的框架知识了,这两天很想将它整合一下.网上看了很多整合案例,基本都是基于Eclipse的,但现在外面公司基本都在用Intellij IDEA了,所以结合所学知识,自己做了个总结,有不足之处欢迎指正. 首先,我是参考了http://blog.csdn.net/zhshulin/article/details/37956105这篇做的Intellij IDEA翻版.Intellij IDEA的许多操作方式与习惯与eclipse区别很大,所以很容易走入误区.直接上操作吧. 1.基本概念

【Spring】Spring使用XML配置声明式事务

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.事务介绍 事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性 事务就是一系列的动作,它们被当作一个单独的工作单元.这些动作要么全部完成,要么全部不起作用. 事务的四个关键属性(ACID) ① 原子性(atomicity):事务室一个原子操作,有一系列动作组成.事务的原子性确保动作要么全部完成,要么完全不起作用② 一致性(consistency):一旦所

Spring 梳理-Spring配置文件 -&lt;context:annotation-config/&gt;和&lt;context:component-scan base-package=&quot;&quot;/&gt;和&lt;mvc:annotation-driven /&gt; 的区别

<context:annotation-config/> 在基于主机方式配置Spring时,Spring配置文件applicationContext.xml,你可能会见<context:annotation-config/>这样一条配置,它的作用是隐式的向Spring容器注册 AutowiredAnnotationBeanPostProcessor, CommonAnnotationBeanPostProcessor, PersistenceAnnotationBeanPostPr

spring(一)--spring/springmvc/spring+hibernate(mybatis)配置文件

这篇文章用来总结一下spring,springmvc,spring+mybatis,spring+hibernate的配置文件 1.web.xml 要使用spring,必须在web.xml中定义分发器等信息,基本的配置信息如下: <?xml version="1.0" encoding= "UTF-8"?> <web-app version= "3.0" xmlns="http://java.sun.com/xml/n

Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis)视频教程

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)视频教程下载   联系QQ:1026270010 Extjs作为一款优秀的JS前端开发框架以其良好的架构.丰富的UI组件库.完善的文档和社区支持等诸多优点拥有广泛的市场应用空间,开发人员无需过多的关注HTML.CSS甚至各种常用JS算法,只需把精力放在业务逻辑上,利用各种组件的相互组合调用便可轻松而高效的开发出系统的前端页面. Extjs5在之前版本的基础上又推出