黑马程序员技术交流社区
标题:
[太原校区]spring+springmvc+mybatis+springboot+jpa中常用的注解
[打印本页]
作者:
爱学习的翟
时间:
2019-5-24 16:10
标题:
[太原校区]spring+springmvc+mybatis+springboot+jpa中常用的注解
注解总结
注解的属性:如果注解中有且只有一个属性要赋值时,且名称是 value,value 在赋值是可以不写。
1.spring
1.1声明bean的 创建对象的
1.1.1 @Componet:
作用:把资源让 spring 来管理。相当于在 xml 中配置一个 bean。
属性:value:指定 bean 的 id。如果不指定 value 属性,默认 bean 的 id 是当前类的类名。首字母小写。
1.1.1.1 @Controller:一般用于表现层的注解。
1.1.1.2 @Service:一般用于业务层的注解。
1.1.1.3 @Repository::一般用于持久层的注解。
1.1.2 @Bean
作用:该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器。
属性:name:给当前@Bean 注解方法创建的对象指定一个名称(即 bean 的 id)
1.2注入数据的
1.2.1 @Autwired
作用:自动按照类型注入。当使用注解注入属性时,set 方法可以省略。它只能注入其他 bean 类型。当有多个
类型匹配时,使用要注入的对象变量名称作为 bean 的 id,在 spring 容器查找,找到了也可以注入成功。找不到
就报错。
1.2.2 @Qualifier
作用:在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和
@Autowire 一起使用;但是给方法参数注入时,可以独立使用
属性:value:指定 bean 的 id
1.2.3 @Resource
作用:直接按照 Bean 的 id 注入。它也只能注入其他 bean 类型。
属性:name:指定 bean 的 id。
1.2.1. @Value
作用:注入基本数据类型和 String 类型数据的
属性:value:用于指定值
1.3用于改变作用范围的
1.3.1 @Scope
作用:指定 bean 的作用范围。
属性:value:指定范围的值。 取值:singleton prototype request session globalsession
1.4和生命周期相关的:
1.4.1 @PostConstruct 作用:用于指定初始化方法。
1.4.2 @PreDestroy 作用:用于指定销毁方法。
1.5 新注解
1.5.1 @Configuration
作用:用于指定当前类是一个 spring 配置类,当创建容器时会从该类上加载注解。
获取容器时需要使用AnnotationApplicationContext(有@Configuration 注解的类.class)。
属性:value:用于指定配置类的字节码
1.5.2 @ComponentScan
作用:用于指定 spring 在初始化容器时要扫描的包。作用和在 spring 的 xml 配置文件中的:<context:component-scan base-package="com.itheima"/>是一样的。
属性:basePackages:用于指定要扫描的包。和该注解中的 value 属性作用一样。
1.5.3 @PropertySource
作用:用于加载.properties 文件中的配置。例如我们配置数据源时,
可以把连接数据库的信息写到properties 配置文件中,就可以使用此注解指定 properties 配置文件的位置
属性:value[]:用于指定 properties 文件位置。如果是在类路径下,需要写上 classpath
1.5.4 @Import
作用:用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration 注解。当然,写上也没问题。
属性:value[]:用于指定其他配置类的字节码
2.AOP 相关
2.1 @Aspect
作用:把当前类声明为切面类。
2.2 @Before
作用:把当前方法看成是前置通知。
属性:value:用于指定切入点表达式,还可以指定切入点表达式的引用
2.3 @AfterReturning
作用:把当前方法看成是后置通知。
属性:value:用于指定切入点表达式,还可以指定切入点表达式的引用
2.4 @AfterThrowing
作用:把当前方法看成是异常通知。
属性:value:用于指定切入点表达式,还可以指定切入点表达式的引用
2.5 @After
作用:把当前方法看成是最终通知。
属性:value:用于指定切入点表达式,还可以指定切入点表达式的引用
2.6 @Around
作用:把当前方法看成是环绕通知。
属性:value:用于指定切入点表达式,还可以指定切入点表达式的引用。
2.7 @Pointcut
作用:指定切入点表达式
属性:value:指定表达式的内容
2.8 @EnableAspectJAutoProxy:
作用:表示开启AOP代理自动配置
2.9 事务相关
2.9.1 @EnableTransactionManagement
作用:开启spring事务管理,
2.9.2 @Transactional
作用:出现接口上,表示该接口的所有实现类都有事务支持。
出现在类上,表示类中所有方法有事务支持
出现在方法上,表示方法有事务支持。
以上三个位置的优先级:方法>类>接口
3.mybatis 相关
3.1 @Insert:作用:实现新增
3.2 @Update:作用:实现更新
3.3 @Delete:作用:实现删除
3.4 @Select:作用:实现查询
3.5 @Result:
作用:实现结果集封装
属性:id、column,property,one,many
3.6 @Results:可以与@Result 一起使用,封装多个结果集
3.4 @ResultMap:实现引用@Results 定义的封装
3.8 @One:作用:实现一对一结果集封装
3.9 @Many:作用:实现一对多结果集封装
3.10 @SelectProvider:作用: 实现动态 SQL 映射
3.11 @CacheNamespace:作用:实现注解二级缓存的使用
3.12 @SelectKey 作用:与@Insert和@update 一起使用返回修改的id
3.13 @Param 作用:入参绑定
3.14 @ResultType 作用:返回值
4.SpringMVC:
4.1 @RequestMapping
作用:是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
属性: value, method,
4.2 @RequestParam
作用:把请求中指定名称的参数给控制器中的形参赋值。
属性:value:请求参数中的名称。
4.3 @RequestBody
作用:用于获取请求体内容。直接使用得到是 key=value&key=value...结构的数据。get 请求方式不适用。
属性:required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false,get 请求得到是 null
required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。
4.4 @PathVaribale
作用:用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。url 支持占位符是 spring3.0 之后加入的。
是 springmvc 支持 rest 风格 URL 的一个重要标志。
属性:value:用于指定 url 中占位符名称。required:是否必须提供占位符
4.5 @ResponseBody
作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;\
4.6 @RequestHeader
作用:用于获取请求消息头。
属性:value:提供消息头名称required:是否必须有此消息头
注:在实际开发中一般不怎么用。
4.7 @CookieValue
作用:用于把指定 cookie 名称的值传入控制器方法参数。
属性:value:指定 cookie 的名称。required:是否必须有此 cookie。
4.8 @ModelAttribute
作用:该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可
以修饰有具体返回值的方法。
出现在参数上,获取指定的数据给参数赋值。
属性:value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。
4.9 @SessionAttribute
作用:用于多次执行控制器方法间的参数共享。
属性:value:用于指定存入的属性名称type:用于指定存入的数据类型。
5.junit: @BeforeClass –> @Before –> @Test –> @After –> @AfterClass
5.1 @RunWith
作用:可以更改测试运行器 ,缺省值 org.junit.runner.Runner
属性:value 用什么运行:SpringJUnit4ClassRunner.class spring;JUnit4.class)就是指用JUnit4来运行 Suite.class)的话就是一套测试集合,
@SuitClasses(MyTest.Class,MyTest2.Class)
这个是打包测试功能,多个class 可以一起执行测试,不需要一个一个执行,这样节省时间,提高效率
5.2 @ContextConfiguration
作用:Spring整合JUnit4测试时,使用注解引入多个配置文件
属性: locations = { "classpath:spring1.xml", "classpath:spring2.xml" };classes = SimpleConfiguration.class
5.3 @BeforeClass:作用: 针对所有测试,只执行一次,且必须为static void
5.4 @Before:作用:初始化方法,执行当前测试类的每个测试方法前执行。
5.5 @Test:作用:测试方法,在这里可以测试期望异常和超时时间
5.6 @After:作用:释放资源,执行当前测试类的每个测试方法后执行
5.7 @AfterClass:作用:针对所有测试,只执行一次,且必须为static void
5.8 @Ignore:作用:忽略的测试方法(只在测试类的时候生效,单独执行该测试方法无效)
6.springboot 相关注解
6.1 @SpringBootApplication
作用:引导类
包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
6.2 @EnableAutoConfiguration 自动配置。
6.3 @ComponentScan 组件扫描,可自动发现和装配一些Bean。
6.4 @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。
6.5 @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
6.6 @ConfigurationProperties
作用 可以将配置文件中的配置自动与实体进行映射
属性 prefix
6.7 @Mapper
作用 标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中
6.8 @SpringBootTest
属性 class:@SpringBootTest的属性指定的是引导类的字节码对象
7.jpa
7.1 @Entity
作用:声明实体类
7.2 @Table
作用:建立实体类和表的映射关系
属性 name
7.3 @Id//声明当前私有属性为主键
7.4 @GeneratedValue
作用:配置主键的生成策略
属性:(strategy=GenerationType.*)
7.5 @Column(")
作用:指定和表中字段的映射关系
属性:name
7.6 @Query
作用: 使用jpql的方式查询。
7.7 @Modifying
作用:修改
7.8 @OneToMany(mappedBy="customer")
作用:用于映射一对多的关系
7.9 @JoinColumn
作用:用于定义主键字段和外键字段的对应关系。
属性:
name:指定外键字段的名称
referencedColumnName:指定引用主表的主键字段名称
unique:是否唯一。默认值不唯一
nullable:是否允许为空。默认值允许。
insertable:是否允许插入。默认值允许。
updatable:是否允许更新。默认值允许。
columnDefinition:列的定义信息。
7.10 @ManyToOne
作用:用于映射多对一的关系
7.11 @ManyToMany
作用:用于映射多对多关系
属性:cascade:配置级联操作。
fetch:配置是否采用延迟加载。
targetEntity:配置目标的实体类。映射多对多的时候不用写
7.12 @JoinTable
作用:针对中间表的配置
属性:name:配置中间表的名称
joinColumns:中间表的外键字段关联当前实体类所对应表的主键字段
inverseJoinColumn:中间表的外键字段关联对方表的主键字段
作者:
张志辉
时间:
2019-5-24 16:58
[什么],点击[ http://pinyin.cn/e244439 ]查看表情
作者:
六记
时间:
2019-5-24 17:04
作者:
Julien27
时间:
2019-5-25 15:21
感谢大佬分享,好详细
作者:
郝永亮
时间:
2019-6-4 16:49
学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2