@Autowired:
它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
容器自动装载了一个后置处理器,扫描到@Autowied就会在IoC容器自动查找需要的bean,并装配给该对象的属性
如果有不止一个X类型的bean或者不存在X类型的bean,会抛出BeanCreationException异常。可以使用@Qualifier配合@Autowired
表现层注入的是实现类对象,接收的接口;理解为多态;(Controller–Service–ServiceImpl–Mapper)
Service接口有多个ServiceImpt实现类的情况,就需要指定参数名来选择哪个ServiceImpt实现类
模块和模块之间通过接口对接,主要为了模块间的解耦
@Resource:
作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource则默认按byName自动注入。
@Resource(name="X")
@Controller用于标注控制层组件、@Service服务层组件、@Repository持久层组件、@Component泛指组件
如果一个类带了这些注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了
@Value:该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)和@Value(“#{}”)两种方式
@Value("${}"):配置文件application.properties中
@Value("#{obj.property? :default_value}"): SpEL表达式对应的内容,#{}里面那个obj 代表对象。
@Transactional:声明式事务的一种实现方式
rollbackFor:用于指定能够触发事务回滚的异常类型,如果有多个异常类型需要指定,各类型之间可以通过逗号分隔。
@Transactional 只能应用到 public 方法才有效
添加位置:实现类或类方法上,而不是接口和接口方法上。
@Configuration:
用于定义配置类,可替换xml配置文件
标注在类上,相当于把该类作为spring的xml配置文件中的
@EnableDiscoveryClient 作用:能够让注册中心发现,并扫描到该服务
@FeignClient:处理微服务各个子模块下的模块方法互相调用,(各子模块系统内部通信的核心)必须在Interface接口上使用
参数:value: 服务名,path: 定义当前FeignClient的统一前缀
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写
@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写
@requestBody注解:
用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。
一般情况下来说常用其来处理application/json类型。@RequestBody接受的是一个json格式的字符串,一定是一个字符串。
解析客户端(移动设备、浏览器等)发送过来的json数据,并封装到实体类中。
swagger注解:
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数(当参数太多的时候,需要定义太多的参数,可以使用对象来接收)
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改
@NotNull:一般用在基本类型上,不能为null,但可以为empty,没有Size的约束
@NotBlank:只能用在String上面,不能为null且trim()之后size>0
@NotEmpty:用在集合类上面,不能为null或者长度为
要配合 @valid 注解使用,不然不会生效。
@Valid @Validated :
使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有所不同
注解位置:
@Validated:可以用在类、方法和方法参数上。但是不能用在成员属性(字段)上
@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上
@Validated:用在方法入参上无法单独提供嵌套验证功能。不能用在成员属性(字段)上,也无法提示框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。
@Valid:用在方法入参上无法单独提供嵌套验证功能。能够用在成员属性(字段)上,提示验证框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。
@Async:注解异步处理
基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。
事务处理:将需要事务管理操作的方法放置到异步方法内部
@Async所修饰的函数不要定义为static类型,这样异步调用不会生效
@Param:
持久层注解,一般用于mapper接口,方法传参之前加上;传递参数,从而可以与SQL中的的字段名相对应。
xml文件里#{}里面的名称对应的是@Param括号里面修饰的名称。
@Data:
包含了@Getter、@Setter、@ToString、@EqualsAndHashCode
@Entity注释指名这个java类是一个实体类,实体类的每个实例代表数据表中的一行数据,数据行中的一列对应实例中的一个属性。
@Table:用来标识实体类与数据表的对应关系
@Column注解来标识实体类中属性与数据表中字段的对应关系
name属性定义了被标注字段在数据库表中所对应字段的名称