注解:
注解可以增强java代码,同时利用反射技术可以扩充实现很多功能,被广泛引用与三大框架的底层
注解的分类:
-
jdk自带注解
-
元注解
-
自定义注解
1、JDK的注解
JDK注解的注解(5个)
@Override//方法重写
@Deprecated //标记就表明这个方法已经过时了,但我就要用,别提示我过期
@SuppressWarnings(“deprecation”) //忽略警告
@SafeVarargs //jdk1.7出现,堆污染,不常用
@FunctionallInterface //jdk1.8出现,配合函数式编程拉姆达表达式,不常用
2、元注解(5个)
用来描述注解的注解
@Target //注解用在哪里:类、方法、属性等
@Retention //注解的生命周期:源文件中、字节码文件中、运行中
@Inherited //允许子注解继承
@Documented //生成javadoc时会包含注解,不常用
@Repeatable //注解为可重复类型注解,可以在同一个地方多次使用,不常用
SSM三大框架中使用的注解
@SpringBootApplication//是Spring Boot项目的核心注解,目的是开启自动配置
解决java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use
@SpringBootConfiguration
@SpringBootTest(classes = 启动类名.class)
@MapperScan("cn.tedu.dao")//指定dao接口文件们所在的包
@RestController //作为mvc的c层,用来接收请求给出响应
@RequestMapping("stu")//规定了url的写法
@DateTimeFormat(pattern = "yyyy-MM-dd") //html网页上输入的是Stirng类型的,无法转成Date类型,会报错
@CrossOrigin //放行所有请求,解决跨域问题
@PathVariable //restful的方式请求参数
@Autowired //完成对象间的依赖关系spring di;相当于底层帮你维护了两个对象间的关系:new Student().setTeacher(new Teacher())
@Autowired(required=true)://当使用@Autowired注解的时候,其实默认就是@Autowired(required=true),表示注入的时候,该bean必须存在,否则就会注入失败。
@Autowired(required=false)://表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。
@Component//spring的注解,用来IOC(new)
@Aspect //切面,右切点和通知组成
@Pointcut("execution( * cn.tedu.mvc..*.*(..))")//切点表达式:*表示1个 ..表示多个 *依次代表方法返回值,类名,方法名,(..)是参数列表----
@Pointcut("execution(返回值 包名.类名.方法名(参数列表))")
@Around(“方法”)//添加环绕通知,在业务方法执行前后添加功能
@BeforeEach //再@Test执行前,重复代码,提取出来,提高代码的复用性
@Value //语法:${表达式内容}、利用Spel表达式,通过key,获取value,之后为属性赋值
@PropertySource("classpath:/")//spring指定文件的加载,将数据加载到容器中
看到PropertySources就写classpath:/
@Data //动态生成get/set/toString····方法
@NoArgsConstructor //无参构造
@AllArgsConstructor //全参构造
@Accessors(chain = true) //开启了链式加载(重写了set方法)
@SpringBootTest //启动时,可以自动注入spring容器中的任意对象,进行单元测试
//如果测试方法中添加了该注解,当执行@Test注解方法时,则Spring容器将会自动启动,
启动之后将所有依赖注入的信息完整构建,之后用户有针对性的挑选需要测试的代码
@Service //Service层中使用
@Repository //持久层使用的注解,一般不用,后期使用Mybatis代替
@Controller //controller层中使用
@RestController //表示对象实例化的注解,返回的都是json
@Mapper //写在接口中,Spring为接口创建了一个代理对象
@MapperScan("com.jt.mapper")//SpringBoot为了简化代码,提供了包扫描机制,
为包路径下的接口创建代理对象,之后交给Spring容器管理,可以再任意位置依赖注入
@TableId(type = idType.AUTO) //实体类上,主键自增
AUTO ( 0 ), // 数据库 id 自增NONE ( 1 ), // 未设置主键INPUT ( 2 ), // 手动输入ID_WORKER ( 3 ), // 默认的全局唯一 idUUID ( 4 ), // 全局唯一 id uuidID_WORKER_STR ( 5 ); //ID_WORKER 字符串表示法
@EqualsAndHashCode(callSuper = false/true) //这个注解的作用就是自动的给model bean实现equals方法和hashcode方法
@EqualsAndHashCode(callSuper = false) //不调用父类的属性,那么子类属性里面的相同的话,那hashcode的值就相同啦,equals方法的返回值是true
@EqualsAndHashCode(callSuper = true) //用自己的属性和从父类继承的属性 来生成hashcode,equals方法
的返回值是false
@ApiModelProperty() //注解用于方法、字段,表示对model属性的说明或者数据操作更改
value:字段说明,
name:重写属性名字,
dataType:重写属性类型,
required:是否必须,默认false,
example:举例,
hidden:隐藏。
@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response =
“接口返回参数类型”, notes = “接口发布说明”;
@DataSource //JDBC2.0 提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序中访问数据库时
不必编写连接数据库的代码,直接引用DataSource获取数据库的连接对象即可。用于获取操作数据Connection对象。