黑马程序员技术交流社区

标题: [成都校区]Spring注解解析 [打印本页]

作者: 香蕉你个banana~    时间: 2019-6-12 14:01
标题: [成都校区]Spring注解解析
注解总结
        注解的属性:如果注解中有且只有一个属性要赋值时,且名称是 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:中间表的外键字段关联对方表的主键字段




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2