一.IOC的注解方式
常用的IOC注解有四个: 功能都一样,都是交给spring框架创建对象
@Component //表示将类交给Spring容器管理 spring提供的注解
@Service 用来标识Service层代码 将该类交给Spring容器管理
@Controller 用来标识Controller层的代码 相当于将对象交给Spring管理
@Repository 用来标识持久层
二.DI注解
@Autowired 想要表示两个类之间的依赖关系:DI--把对方当做成员变量, 什么时候需要DI? 当A类想用B类的属性或者方法时,直接把B类依赖注入到A类就可以,di注解,前提是先完成IOC
三.SpringMVC的注解
@RestController = @Controller + @ResponseBody
@Controller 将当前类交给Spring容器管理
@ResponseBody 前后端交互时,将后端服务器返回的对象转化为JSON
前后端交互媒介 http协议 传输的数据都是字符串
JSON: 有特殊格式的字符串
@RequestMapping()
四.
@Value("${cgbname}") //作用:从Spring容器中获取数据,需要指定key 简称:spel表达式
@PropertySource(value = "classpath:/name.properties",encoding = "UTF-8") //加载指定配置文件,并且设定字符集编码格式
@Data //自动生成get/set/toString/equals/hashcode等方法
@Accessors(chain = true) 重写了Set方法..
@NoArgsConstructor //无参构造 @AllArgsConstructor //全参构造
@Configuration 配置类上加 理解:该类是一块区域,在区域中编辑自定义对象
@Bean 管理自定义类的对象 用法区域: 在配置类文件中使用
@SpringBootTest //spring专门为测试准备的注解 作用就是启动Spring容器.
@Test //测试
@DateTimeFormat(pattern="yyyy-MM-dd") 日期属性要加这个注解否则400错误
@SpringBootApplication 启动类注解
@BeforeEach 当每次执行@Test注解方法时,都会先执行该方法
@Select("select * from demo_user") //查询 1.注解标识接口方法, 接口方法调用,直接注解的内容.2.注解将查询的结果集,根据方法的返回值类型动态映射.
@Insert("sql") //新增
@Update("sql") //修改
@Delete("sql") //删除
@Mapper //将xxx接口交给Spring容器管理 @Mapper 管理对象
@MapperScan() //按照指定的包路径,扫描mapper的接口管理对象
@CrossOrigin //解决跨域问题的 域名 端口号 协议 必须一致否则就是跨域
@RequestBody JSON串转化为对象
@ResponseBody 对象可以转化为JSON串
@GetMapping 查询
@PostMapping 新增
@PutMapping 修改
@DeleteMapping 删除
@Transactional //事务的注解 增/删/改/一般需要事务控制
@TableName("demo_user") //对象与表一一对应 如果对象名和表名一致则表名可以省略
@TableId(type = IdType.AUTO) //主键自增
@TableField(exist = false) //表示属性不是表字段
@TableField(fill = FieldFill.INSERT) //新增操作时,实现自动填充
@TableField(fill = FieldFill.INSERT_UPDATE)//新增/修改操作时,自动填充
@SpringBootConfiguration 启动类注解 @SpringBootApplication包含了这个注解
@LoadBalanced @LoadBalanced注解是属于Spring,而不是Ribbon的,Spring在初始化容器的时候,如果检测到Bean被@LoadBalanced注解,Spring会为其设置LoadBalancerInterceptor的拦截器。
@EnableFeignClients (描述配置类,例如启动类 使用Feign的客户端
@FeignClient 告诉Feign Starter,在项目启动时,为此注解描述的接口创建实现类-代理类 定义 Feign的客户端
@Slf4j 创建一个日志对象
@EnableResourceServer 开启资源服务器配置
@EnableGlobalMethodSecurity(prePostEnabled = true) 开启基于方法的安全认证机制
@Pointcut 注解用于定义切入点,此注解中的内容为切入点表达式
@RequiredLog 注解,通过此注解对需要 进行日志记录的方法进行描述
@annotation 为注解方式的切入点表达式,此方式的表达式为一种细粒度的切入点表达式, 因为它可以精确到方法,例如我们现在使用RequiredLog注解描述方法时,由它描述的方法 就是一个切入点方法.
@Around 注解描述的方法为Aspect中的一个环绕通知方法,在此方法 内部可以控制对目标方法的调用.
@Aspect 注解描述的类型为一个切面类型,在此类中可以定义:
1)切入点(切入扩展逻辑的位置~例如权限控制,日志记录,事务处理的位置),在
@Aspect描述的类中,通常使用@Pointcut注解进行定义.使用切入点描述的方法为切入点方法.
2)通知方法(在切入点对应的目标方法执行前后要执行逻辑需要写到这样的方法中),在
@Aspect描述的类中,通过@Before,@After,@Aroud,@AfterReturning,@AfterThrowing
这样的注解进行描述.
a: @Before切入点方法执行之前执行
b: @After 切入点方法执行之后执行(不管切入点方法是否执行成功了,它都会执行)
c: @Aroud 切入点方法执行之前和之后都可以执行(最重要)
d: @AfterReturning 切入点方法成功执行之后执行
e: @AfterThrowing 切入点方法执行时出了异常会执行
@Async 描述的方法底层会异步执行(不由web服务线程执行,
而是交给spring自带的线程池中的线程去执行)但是@Async注解的
应用有个前提,需要启动类上启动异步执行(添加@EnableAsync注解描述).
优点:不会长时间阻塞web服务(例如tomcat)线程
@PreAuthorize注解的作用是什么?(描述资源方法,告诉系统底层,访问此方法需要授权)
@Cacheable 注解描述的方法为一个缓存切入点方法
@CachePut 注解描述的方法为一个切入点方法,此方法执行后,会将方法的返回值存储到缓存中
@EnableCaching 启动AOP缓存配置
@Qualifier(value="") 指定注入那个bean
@Qualifier() 在Controller中需要注入service那么我的这个server有两个实现类如何区分开这两个impl呢? 加这个注解指定一下