zoukankan      html  css  js  c++  java
  • SpringBoot常用注解

    title: SpringBoot常用注解
    date: 2017-07-21 14:17:44
    tags: Java

    简介

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,特点在于:

    1. 创建独立的Spring应用程序
    2. 嵌入的Tomcat,无需部署WAR文件
    3. 简化Maven配置
    4. 自动配置Spring
    5. 提供生产就绪型功能,如指标,健康检查和外部配置
    6. 绝对没有代码生成和对XML没有要求配置

    常用注解

    @SpringBootApplication 它包括了一下三个注解@Configuration,@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。

    一般用于启动的配置:

    @SpringBootApplication
    public class MainApplication{
      public static void main (String args[]){
        SpringApplication.run(Application.class,args);
      }
    }
    

    其中分别解释上面三个注解:

    @Configuration和他的好基友@Bean组成了Spring的一个配置类。

    <beans>  
        <bean id = "car" class="com.test.Car">  
            <property name="wheel" ref = "wheel"></property>  
        </bean>  
        <bean id = "wheel" class="com.test.Wheel"></bean>  
    </beans>  
    

    可以写成

    @Configuration  
    public class Conf {  
        @Bean  
        public Car car() {  
            Car car = new Car();  
            car.setWheel(wheel());  
            return car;  
        }  
        @Bean   
        public Wheel wheel() {  
            return new Wheel();  
        }  
    }  
    

    @EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。

    @ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。

    @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

    @Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

    @Autowired() @Qualifier("baseDao")     
    private BaseDao baseDao;  
    

    @Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,

    如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。如:

    @Resource(name="baseDao")     
    private BaseDao baseDao; 
    

    @RequestMapping:@RequestMapping(“/path”)表示该控制器处理所有“/path”的URL请求。

    @ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用。(也就是return的代码返回到页面上)

      @RequestMapping(path = {"/", "/index"})
        @ResponseBody
        public String index(HttpSession httpSession) {
            logger.info("VISIT HOME");
            return wendaService.getMessage(2) + "Hello NowCoder" + httpSession.getAttribute("msg");
        }
    

    @Controller:用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping

    @Service:一般用于修饰service层的组件

    @PathVariable是用来获得请求url中的动态参数的

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取

    直接在Controller里面加上用@ExceptionHandler标注一个处理异常的方法,如下面的例子:

     @RequestMapping(path = {"/admin"}, method = {RequestMethod.GET})
        @ResponseBody
        public String admin(@RequestParam("key") String key) {
            if ("admin".equals(key)) {
                return "hello admin";
            }
            throw  new IllegalArgumentException("参数不对");
        }
    
        @ExceptionHandler()
        @ResponseBody
        public String error(Exception e) {
            return "error:" + e.getMessage();
        }
  • 相关阅读:
    小细节--Extjs中,renderTo 和applyTo的区别
    asp.net下用js实现弹出子窗口选定值并返回
    asp.net下用js实现弹出子窗口选定值并返回
    浅析js的执行顺序
    Hdu 1010 Tempter of the Bone 分类: Translation Mode 2014-08-04 16:11 82人阅读 评论(0) 收藏
    Hdu 1009 FatMouse' Trade 分类: Translation Mode 2014-08-04 14:07 74人阅读 评论(0) 收藏
    HDU 1532 Drainage Ditches 分类: Brush Mode 2014-07-31 10:38 82人阅读 评论(0) 收藏
    Hdu 1507 Uncle Tom's Inherited Land* 分类: Brush Mode 2014-07-30 09:28 112人阅读 评论(0) 收藏
    Poj 1255 覆盖的面积 2014-07-28 12:29 116人阅读 评论(0) 收藏
    Poj 2528 Mayor's posters 分类: Brush Mode 2014-07-23 09:12 84人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/scnulyp/p/7420646.html
Copyright © 2011-2022 走看看