码迷,mamicode.com
首页 > 编程语言 > 详细

Spring注释(Spring Annotations)

时间:2015-04-14 16:09:42      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

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

AnnotationPackage Detail/Import statement
@Serviceimport org.springframework.stereotype.Service;
@Repositoryimport org.springframework.stereotype.Repository;
@Componentimport org.springframework.stereotype.Component;
@Autowiredimport org.springframework.beans.factory.annotation.Autowired;
@Transactionalimport org.springframework.transaction.annotation.Transactional;
@Scopeimport org.springframework.context.annotation.Scope;
Spring MVC Annotations
@Controllerimport org.springframework.stereotype.Controller;
@RequestMappingimport org.springframework.web.bind.annotation.RequestMapping;
@PathVariableimport org.springframework.web.bind.annotation.PathVariable;
@RequestParamimport org.springframework.web.bind.annotation.RequestParam;
@ModelAttributeimport org.springframework.web.bind.annotation.ModelAttribute;
@SessionAttributesimport org.springframework.web.bind.annotation.SessionAttributes;
Spring Security Annotations
@PreAuthorizeimport 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”)。

@Controller@RequestMapping(“/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);
}

 

Spring注释(Spring Annotations)

标签:

原文地址:http://www.cnblogs.com/aries1991/p/4424922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!