SpringBoot:注解详解

@RequestMapping

注解在类上:表示该类中所有响应请求的方法都以此地址为父路径

value(path) 指定请求的实际访问地址,默认@RequestMapping(“url”)的值url即为value的值。指定的地址可以是 URI Template 模式。
method 指定请求的method类型,主要有 GET、POST、DELETE、PUT等;
params 指定request中必须包含某些参数值,包含才让该方法处理请求。
headers 指定request中必须包含某些指定的header值,包含才能让该方法处理请求。
consumes 指定处理请求的提交内容类型(Content-Type),例如:application/json, text/html;
produces 指定返回的内容类型,当且仅当request请求头中的(Accept)类型中包含该指定类型才返回;

@RequestMapping("/emps")
public interface EmpController

注解在方法上:表示映射请求路径的具体信息,即访问该方法的访问路径为注解的value值

可以被以下这些注解替代

@GetMapping

使用get方式请求

get请求注解主要用于增删改查的查

@PutMapping

使用put方式请求

put请求注解主要用于增删改查的改

@DeleteMapping

使用delete方式请求

delete请求注解主要用于增删改查的删

@PostMapping

使用post方式请求

post请求注解主要用于增删改查的增

@RequestMapping("/testRequestMapping")
    public String testRequestMapping(){
        return "success";
    }
@RequestParam

将请求参数绑定到控制器的方法参数上

@RequestParam("映射参数")
@DateTimeFormat

日期格式化转换参数

将日期类型的数据以pattern形式解析

@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin
@RequestBody

用对象形式接收JSON类型参数

Result insert(@RequestBody Emp emp);
@PathVariable

用指定类型来接收写在路径中的参数

@DeleteMapping("/{ids}")
Result delete(@PathVariable List<Integer> ids);
@ResponseBody

包含在@RestController中

如果没有这个注解,控制类的返回值会解析为跳转一个路径

加了注解后如果返回对象会解析为json

如果返回字符串会返回字符串

返回在响应体中

@ResponseBody
@RequestMapping(value = "/loginIn", produces = "application/json;charset=UTF-8")
public Object login(UserBean user)
@Component 声明bean的基础注解,将该类的对象交给 IOC 容器管理
@Controller ‘@Component’ 的衍生注解, 标注在控制层类上
@Service ‘@Component’ 的衍生注解, 标注在业务层类上
@Repository ‘@Component’ 的衍生注解, 标注在持久层类上

以上注解功能一样,都是标记一个类为组件,让spring在程序启动时扫描并加载这些组件,将这些类的对象交给IOC管理,在其他类中可以使用@Autowired注入

@Autowired 用来获取 IOC 容器中管理的对象,获取的是对象所在实现类实现的接口类型
@Service
public class DeptServiceImpl implements DeptService 
@Autowired
DeptService deptService;
@ComponentScan

包含在@SpringBootApplication中,在启动类上注解

批量注册bean,默认扫描注解修饰的类所在的包,默认对

@Component 声明bean的基础注解,将该类的对象交给 IOC 容器管理
@Controller ‘@Component’ 的衍生注解, 标注在控制层类上
@Service ‘@Component’ 的衍生注解, 标注在业务层类上
@Repository ‘@Component’ 的衍生注解, 标注在持久层类上

带有这些注解的类进行扫描,交给IOC容器管理

@SpringBootApplication
@ServletComponentScan
public class TliasApplication {

    public static void main(String[] args) {
        SpringApplication.run(TliasApplication.class, args);
    }

}
@Primary

设置多个相同接口的实现类对象中的一个为主要对象,注入时会优先注入此对象

@Primary
@Service
public class EmpServiceImpl implements EmpService
@Qualifier

和@Component及其衍生注解一起使用对提交给IOC的对象进行标注

@Service
@Qualifier("test")
public class EmpServiceImpl implements EmpService 

和@Autowired一起使用对被标注的对象进行注入

@Autowired
@Qualifier("test")
EmpService empService;
@Resource

与@Qualifier类似,但@Qualifier由Spring提供且在value属性中标记,而@Resource由Java提供且在name属性中标记

@Service
@Resource(name = "test")
public class EmpServiceImpl implements EmpService 
@Data

由lombok工具类库提供

自动实现类的get、set、equals、hashCode、toString方法

@NoArgsConstructor

lombok下给实体类生成空参构造

@AllArgsConstructor

lombok下给实体类生成全参构造

@Param

在mapper层中将参数进行映射到sql语句中

@Select("select * from emp where id = #{id}")
Emp selectById(@Param("id") Integer id);
@ConfigurationProperties

将配置文件封装成实体类,需要时直接使用@Autowired注入使用

@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss") //指定配置文件
public class AliOSSProperties {
	private String endpoint;
	private String accessKeyId;
	private String accessKeySecret;
	private String bucketName;
}
@Value

将配置文件中的属性注入

@Value("${aliyun.oss.endpoint}")
private String endpoint;
@ServletComponentScan

在启动类上加此注解可以令Servlet,Filter,Listener三大组件直接通过@WebServlet,@WebFilter,@WebListener注解自动注册,无需其他代码

@SpringBootApplication
@ServletComponentScan
public class TliasApplication
@RestControllerAdvice

ControllerAdvice+ResponseBody

@Transactional

使方法被事务管理

@Aspect

声明切面类

@Order(数字)

控制通知的顺序,方法执行前按升序执行,方法执行后按降序执行,类似于栈结构

@Around

//此注解标注的通知方法在目标方法前后都执行
//需要自己调用ProceedingJoinPoint.proceed()方法来让目标方法执行

@Before

//此注解标注的通知方法在目标方法前被执行

@After

//此注解标注的通知方法在目标方法后被执行,无论是否存在异常
(在finally块中)

@AfterReturning

//同上,但有异常时不会执行,后于@After执行

@AfterThrowing

//在发生异常后执行

通知注解的属性:
execution

上述注解的属性,通过((访问修饰符) 返回值 包名.类名.方法名(方法参数) throws 异常)来对方法进行匹配,和@annotation 功能类似

@annotation()

匹配方法上的注解(需要自己自定义注解,将全限定名写在括号中)

@annotation通过方法上的注解进行过滤

args()

匹配方法的参数类型

@Around("@annotation(appendAnnotation) && args(Integer)")
@annotation(com.itheima.anno.Log)
@PointCut

通过@PointCut注解,可以抽取一个切入点表达式,然后在其他的地方就可以通过类似于方法调用 的形式来引用该切入点表达式

    @Pointcut("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")
    public void pt(){}

    @Around("pt()")
    public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable {
        long begin = System.currentTimeMillis();
        //调用原始操作
        Object result = joinPoint.proceed();
        long end = System.currentTimeMillis();
        log.info("执行耗时 : {} ms", (end-begin));
        return result;
    }
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值