spring 注解

Weixl 的个人博客 贼拉正经的个人博客 本文由博客端 http://localhost 主动推送

Spring 注解

注解的功能

  1. 采用纯 Java 代码,不在需要配置繁杂的 XML 文件
  2. 在配置中也可享受面向对象带来的好处
  3. 类型安全对重构可以提供良好的支持
  4. 减少复杂配置文件的同时亦能享受到 springIoC 容器提供的功能

Spring 注解

常用:

提供路由信息,负责URL到Controller中具体函数的映射
SpringBoot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。

例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。

你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。

如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。
表示自动扫描搜索组件,如果有扫描到@controller @Service ...等就注册为Bean。
扫描到@Configuration就设置为配置类调用。
用@Bean标注方法等价于XML中配置的bean。
注册类
获取RequestMapping('/{a}') 请求路径中 a的数据
标注在方法、字段、参数之上,表示对应的值不可以为空

不常用

等价于默认的@Autowired,只是没有required属性
一般与@Autowired配合使用当有多个同一类型的Bean时可以用@Qualifier(name)来指定
@Autowired结合起来相当于是 @Resource(name="") 一个作用
可用在区分 父子继承关系中

@Service
public class AaaService implements IChangePassword { }

@Service
public class BbbService implements IChangePassword { }

想通过@Autowired引入AaaService时

@Autowired
@Qualifier("aaaService") // 注意默认开头小写
private IChangePassword aaaService; // 父类属性,子类对象

pojo 数据相关

标记的属性会被序列化,属性默认都是会被序列化的。 反序列化(将json数据转换为对象时)。如果没有@JsonManagedReference ,则不会自动注入到@JsonBackReference标注的属性中。
表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。

SpringMVC 注解

请求url的映射。 属性:
value: 请求的url地址 支持通配符匹配@RequestMapping(value="getUser/*");
即 localhost/getUser/hahaha 什么都都可以访问

path: 和 value属性使用一致

name: 注释,方便理解属性

method: 表示该方法仅仅处理哪些HTTP请求方式 , 可以写一个数组 method={xx,xx}

params: 请求中必须包含params属性规定的参数时,才能执行该请求
@RequestMapping(value = "getUser",params = "flag") 
请求中必须包含flag参数才能执行该请求,flag参数值不做要求
getUser?flag=xxx     此URL能够正常访问getUser()方法

header: 求中必须包含某些指定的header值,才能够让该方法处理请求
@RequestMapping(value = "getUser",headers = "Referer=http://www.xxx.com")
必须满足请求的header中包含了指定的"Referer"请求头和值为"http://www.xxx.com"时,才能执行该请求

consumer: 指定处理请求提交内容类型(Content-Type) 列如:application/json、text/html时,才能够让该方法处理请求

produces: 指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型
produces属性还可以指定返回值的编码
produces = "application/json,charset=utf-8" 则指明返回utf-8编码

全局异常注解

用在方法上面表示遇到这个异常就执行以下Exception方法
//全局异常捕捉处理
@ControllerAdvice
public class CustomExceptionHandler {

    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public Map errorHandler(Exception ex) {
        Map map = new HashMap();
        map.put("code", 400);
        //判断异常的类型,返回不一样的返回值
        if(ex instanceof MissingServletRequestParameterException){
            map.put("msg","缺少必需参数:"+((MissingServletRequestParameterException) ex).getParameterName());
        }
        else if(ex instanceof MyException){
            map.put("msg","这是自定义异常");
        }
        return map;
    }
}

使用环境注解

APO 切面注解

定义切入点
@Pointcut("execution(public java.util.Map com.example.demo.controller.TestService.getMap(String, Integer))")
private void p() {}

可以定义在类变量上, 然后在 @Before..等通知中 就可以调用。
@Before("p()")

ConditionalOnXXX

@ConfigurationProperties

@EnableConfigurationProperties

Cache 缓存

进行缓存 , 可以用在方法(返回值被缓存) 或 类上(所有方法缓存),
下次使用相同方法和相同参数都会直接从缓存中查去,不会再走方法
常用属性:
value: 设置一个组 , 即各个方法通过value组来进行共同缓存。必填
key: 设置一个组件标识,用于区分同组下的不同缓存,不填系统默认生成
condition: 条件判断,可以填写SpEL表达式,进行条件判断,是否去查询缓存
  • 笔记

    好记性不如烂笔头。

    258 引用 • 659 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    822 引用 • 1391 回帖 • 674 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2812 引用 • 8042 回帖 • 749 关注

赞助商 我要投放

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...