@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;}