• 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();
        }
  • 相关阅读:
    实例告诉你如何把 if-else 重构成高质量代码!
    Java8 快速实现List转map 、分组、过滤等操作
    大学四年Java学习路线规划,所有私藏资料我都贡献出来了!
    Redis面试题汇总(附答案),面试突击专用
    代码优化大盘点:35 个 Java 代码优化魔鬼细节
    ES6+Webpack+Babel基本环境搭建
    抽象类和接口的异同及实例解析
    .NET ORM 哪家强
    Asp.Net 高性能ORM框架 SqlSugar.ORM 2.8
    ASP.NET 让无码编程不在是梦 -.NET通用平台、通用权限、易扩展、多语言、多平台架构框架
  • 原文地址:https://www.cnblogs.com/scnulyp/p/7420646.html
Copyright © 2020-2023  润新知