Spring常用注解介绍经典总结

Posted zhukaixin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring常用注解介绍经典总结相关的知识,希望对你有一定的参考价值。

Spring常用注解介绍【经典总结】

Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式。
Spring注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效率!

下面讲解Spring中常用的一些注解。

 

注解类介绍

@Component :标准一个普通的spring Bean类。
@Repository:标注一个DAO组件类。
@Service:标注一个业务逻辑组件类。
@Controller:标注一个控制器组件类。

这些都是注解在平时的开发过程中出镜率极高,@Component、@Repository、@Service、@Controller实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型。@Component可以代替@Repository、@Service、@Controller,因为这三个注解是被@Component标注的。如下代码

 

1 @Target({ElementType.TYPE})
2 @Retention(RetentionPolicy.RUNTIME)
3 @Documented
4 @Component
5 public @interface Controller {
6     String value() default "";
7 }

 

(1)当一个组件代表数据访问层(DAO)的时候,我们使用@Repository进行注解,如下

1 @Repository
2 public class HappyDaoImpl implements HappyDao{
3 private final static Logger LOGGER = LoggerFactory.getLogger(HappyDaoImpl .class);
4 public void  club(){
5         //do something ,like drinking and singing
6     }
7 }

(2)当一个组件代表业务层时,我们使用@Service进行注解,如下

项目实际应用:

 1 @Service
 2 @Transactional(readOnly = true)
 3 public class ChartChineseOceanService extends CrudService<ChartChineseOceanDao, ChartChineseOcean> {
 4 
 5     public ChartChineseOcean get(String id) {
 6         return super.get(id);
 7     }
 8     
 9     public List<ChartChineseOcean> findList(ChartChineseOcean chartChineseOcean) {
10         return super.findList(chartChineseOcean);
11     }
12     
13     public Page<ChartChineseOcean> findPage(Page<ChartChineseOcean> page, ChartChineseOcean chartChineseOcean) {
14         return super.findPage(page, chartChineseOcean);
15     }
16     
17     @Transactional(readOnly = false)
18     public void save(ChartChineseOcean chartChineseOcean) {
19         super.save(chartChineseOcean);
20     }
21     
22     @Transactional(readOnly = false)
23     public void delete(ChartChineseOcean chartChineseOcean) {
24         super.delete(chartChineseOcean);
25     }
26     
27 }

(3)当一个组件作为前端交互的控制层,使用@Controller进行注解,如下

1 @Controller
2 public class HappyController {
3     @Autowired //下面进行讲解
4     private ClubService clubService;
5 
6     // Control the people entering the Club
7     // do something
8 }
9 /*Controller相关的注解下面进行详细讲解,这里简单引入@Controller*/

实际应用:

 1 /**
 2  * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 3  */
 4 package com.thinkgem.jeesite.modules.tpydg.chart.web;
 5 
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 import org.apache.shiro.authz.annotation.RequiresPermissions;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.stereotype.Controller;
12 import org.springframework.ui.Model;
13 import org.springframework.web.bind.annotation.ModelAttribute;
14 import org.springframework.web.bind.annotation.RequestMapping;
15 import org.springframework.web.bind.annotation.RequestParam;
16 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
17 
18 import com.thinkgem.jeesite.common.config.Global;
19 import com.thinkgem.jeesite.common.persistence.Page;
20 import com.thinkgem.jeesite.common.web.BaseController;
21 import com.thinkgem.jeesite.common.utils.StringUtils;
22 import com.thinkgem.jeesite.modules.tpydg.chart.entity.ChartSchoolEnrolment;
23 import com.thinkgem.jeesite.modules.tpydg.chart.service.ChartSchoolEnrolmentService;
24 
25 import java.util.List;
26 
27 /**
28  * 岛国入学率Controller
29  * @author zkx
30  * @version 2018-05-15
31  */
32 @Controller
33 @RequestMapping(value = "${adminPath}/chart/chartSchoolEnrolment")
34 public class ChartSchoolEnrolmentController extends BaseController {
35 
36     @Autowired
37     private ChartSchoolEnrolmentService chartSchoolEnrolmentService;
38     
39     @ModelAttribute
40     public ChartSchoolEnrolment get(@RequestParam(required=false) String id) {
41         ChartSchoolEnrolment entity = null;
42         if (StringUtils.isNotBlank(id)){
43             entity = chartSchoolEnrolmentService.get(id);
44         }
45         if (entity == null){
46             entity = new ChartSchoolEnrolment();
47         }
48         return entity;
49     }
50     
51     @RequiresPermissions("chart:chartSchoolEnrolment:view")
52     @RequestMapping(value = {"list", ""})
53     public String list(ChartSchoolEnrolment chartSchoolEnrolment, HttpServletRequest request, HttpServletResponse response, Model model) {
54         Page<ChartSchoolEnrolment> enrolmentPage = new Page<ChartSchoolEnrolment>(request, response);
55         enrolmentPage.setOrderBy("year DESC");
56         Page<ChartSchoolEnrolment> page = chartSchoolEnrolmentService.findPage(enrolmentPage, chartSchoolEnrolment);
57         model.addAttribute("page", page);
58         return "tpydg/chart/chartSchoolEnrolmentList";
59     }
60 
61     @RequiresPermissions("chart:chartSchoolEnrolment:view")
62     @RequestMapping(value = "form")
63     public String form(ChartSchoolEnrolment chartSchoolEnrolment, Model model) {
64         model.addAttribute("chartSchoolEnrolment", chartSchoolEnrolment);
65         return "tpydg/chart/chartSchoolEnrolmentForm";
66     }
67 
68     @RequiresPermissions("chart:chartSchoolEnrolment:edit")
69     @RequestMapping(value = "save")
70     public String save(ChartSchoolEnrolment chartSchoolEnrolment, Model model, RedirectAttributes redirectAttributes) {
71         if (!beanValidator(model, chartSchoolEnrolment)){
72             return form(chartSchoolEnrolment, model);
73         }
74         ChartSchoolEnrolment schoolEnrolment = new ChartSchoolEnrolment();
75         schoolEnrolment.setYear(chartSchoolEnrolment.getYear());
76         List<ChartSchoolEnrolment> list = chartSchoolEnrolmentService.findList(schoolEnrolment);
77         if(StringUtils.isBlank(chartSchoolEnrolment.getId())&&! list.isEmpty()){
78             addMessage(redirectAttributes, "添加失败,"+chartSchoolEnrolment.getYear()+"年数据已经存在!");
79         } else{
80             chartSchoolEnrolmentService.save(chartSchoolEnrolment);
81             addMessage(redirectAttributes, "添加成功");
82         }
83         return "redirect:"+Global.getAdminPath()+"/chart/chartSchoolEnrolment/?repage";
84     }
85     
86     @RequiresPermissions("chart:chartSchoolEnrolment:edit")
87     @RequestMapping(value = "delete")
88     public String delete(ChartSchoolEnrolment chartSchoolEnrolment, RedirectAttributes redirectAttributes) {
89         chartSchoolEnrolmentService.delete(chartSchoolEnrolment);
90         addMessage(redirectAttributes, "删除岛国入学率成功");
91         return "redirect:"+Global.getAdminPath()+"/chart/chartSchoolEnrolment/?repage";
92     }
93 
94 }

[email protected]   @Autowired:属于Spring 的org.springframework.beans.factory.annotation包下,可用于为类的属性、构造器、方法进行注值

实际应用:

 1    @Autowired
 2     private ChartPopulationGrowthService chartPopulationGrowthService;
 3     @Autowired
 4     private ChartSchoolEnrolmentService chartSchoolEnrolmentService;
 5     @Autowired
 6     private ChartExportRateService chartExportRateService;
 7     @Autowired
 8     private ChartForeignInvestmentService chartForeignInvestmentService;
 9     @Autowired
10     private  ChartGdpCompositionService chartGdpCompositionService;
11     @Autowired
12     private ChartGdpGrowthRateService chartGdpGrowthRateService;
13     @Autowired
14     private ChartGdpPurchaseDiscountService chartGdpPurchaseDiscountService;

[email protected] : 这个注解用于将url映射到整个处理类或者特定的处理请求的方法。可以只用通配符!

@RequestMapping 既可以作用在类级别,也可以作用在方法级别。当它定义在类级别时,标明该控制器处理所有的请求都被映射到 /favsoft 路径下。@RequestMapping中可以使用 method 属性标记其所接受的方法类型,如果不指定方法类型的话,可以使用 HTTP GET/POST 方法请求数据,但是一旦指定方法类型,就只能使用该类型获取数据。

实际应用:

 1 @RequestMapping(value = {"list", ""})
 2     public String list(ChartPopulationGrowth chartPopulationGrowth, HttpServletRequest request, HttpServletResponse response, Model model) {
 3         Page<ChartPopulationGrowth> growthPage = new Page<ChartPopulationGrowth>(request, response);
 4         growthPage.setOrderBy("year DESC");
 5         Page<ChartPopulationGrowth> page = chartPopulationGrowthService.findPage(growthPage, chartPopulationGrowth);
 6         model.addAttribute("page", page);
 7         return "tpydg/chart/chartPopulationGrowthList";
 8     }
 9 
10     @RequiresPermissions("chart:chartPopulationGrowth:view")
11     @RequestMapping(value = "form")
12     public String form(ChartPopulationGrowth chartPopulationGrowth, Model model) {
13         model.addAttribute("chartPopulationGrowth", chartPopulationGrowth);
14         return "tpydg/chart/chartPopulationGrowthForm";
15     }
16 
17     @RequiresPermissions("chart:chartPopulationGrowth:edit")
18     @RequestMapping(value = "save")
19     public String save(ChartPopulationGrowth chartPopulationGrowth, Model model, RedirectAttributes redirectAttributes) {
20         if (!beanValidator(model, chartPopulationGrowth)){
21             return form(chartPopulationGrowth, model);
22         }
23 
24         ChartPopulationGrowth search = new ChartPopulationGrowth();
25         search.setYear(chartPopulationGrowth.getYear());
26         List<ChartPopulationGrowth> list = chartPopulationGrowthService.findList(search);
27         if(StringUtils.isBlank(chartPopulationGrowth.getId())&&!list.isEmpty()){
28             addMessage(redirectAttributes,"添加失败,"+chartPopulationGrowth.getYear()+"年数据已经存在!");
29         }else{
30             chartPopulationGrowthService.save(chartPopulationGrowth);
31             addMessage(redirectAttributes, "添加成功");
32         }
33         return "redirect:"+Global.getAdminPath()+"/chart/chartPopulationGrowth/?repage";
34     }
35     
36     @RequiresPermissions("chart:chartPopulationGrowth:edit")
37     @RequestMapping(value = "delete")
38     public String delete(ChartPopulationGrowth chartPopulationGrowth, RedirectAttributes redirectAttributes) {
39         chartPopulationGrowthService.delete(chartPopulationGrowth);
40         addMessage(redirectAttributes, "删除岛国 人口增长成功");
41         return "redirect:"+Global.getAdminPath()+"/chart/chartPopulationGrowth/?repage";
42     }
43 
44     @RequiresPermissions("chart:chartPopulationGrowth:edit")
45     @RequestMapping(value = "import")

[email protected] :将请求的参数绑定到方法中的参数上,有required参数,默认情况下,required=true,也就是改参数必须要传。如果改参数可以传可不传,可以配置required=false。

1  @RequestMapping("/happy")
2   public String sayHappy(
3   @RequestParam(value = "name", required = false) String name,
4   @RequestParam(value = "age", required = true) String age) {
5   //age参数必须传 ,name可传可不传
6   ...
7   }

 

以上就是开发中用的最多的注解啦 

 

参照博客:

https://blog.csdn.net/u010648555/article/details/76299467

 






以上是关于Spring常用注解介绍经典总结的主要内容,如果未能解决你的问题,请参考以下文章

Spring 框架常用语法进行总结

Spring常用注解总结

Spring常用注解总结

Spring系列之Spring常用注解总结

Spring注解的实现原理和Spring常用注解介绍

SpringBoot | 第六章:常用注解介绍及简单使用