spring boot注解

  • @ComponentScan扫描器

  • @Configuration表明该类是配置类

    • 在配置类中使用@Bean修饰方法,蒋返回值加入到IOC容器中

      • 使用@Bean来修饰方法,该方法返回一个对象。

      • 不管方法体内的对象是怎么创建的,Spring可以获取得到对象就行了。

      • Spring内部会将该对象加入到IOC容器中

      • 容器中bean的ID默认为方法名

    • 在测试类使用@ContextConfiguration加载配置类的信息

  • @Component 指定把一个对象加入IOC容器,把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>

  • @Repository 作用同@Component; 在DAO层使用

  • @Service 作用同@Component; 在业务逻辑层使用

  • @Controller 作用同@Component; 在控制层使用

  • @Resource 自动注入bean

    • 如果@Resource不指定值name,那么就根据类型来找,相同的类型在IOC容器中不能有两个

    • 如果@Resource指定了值,那么就根据名字来找

  • @Autowired注解来实现自动装配:

    • 可以在 成员变量(不用写setter方法)、构造器、setter方法 上修饰

    • 如果没有匹配到bean(或允许为null),又为了避免异常的出现,我们可以设置required属性为false @Autowired(required=false)

  • J2EE的@Resource和@AutoWired有相同的功能,区别如下:

    • @Resource默认按byName装配,可以设置属性来选择使用name 或者 type 装配

      • @AutoWired默认按byType装配,如果想使用name装配,结合@Qualifier注解使用

  • @EnableAspectJAutoproxy,开启Spring对AspectJ的支持

  • @Aspect 指定一个类为切面类

  • @Pointcut("execution(* cn.itcast.e_aop_anno.*.*(..))") 指定切入点表达式

  • @Before("pointCut_()") 前置通知: 目标方法之前执行

  • @After("pointCut_()") 后置通知:目标方法之后执行(始终执行)

  • @AfterReturning("pointCut_()") 返回后通知: 执行方法结束前执行(异常不执行)

  • @AfterThrowing("pointCut_()") 异常通知: 出现异常时候执行

  • @Around("pointCut_()") 环绕通知: 环绕目标方法执行,使用该注解的方法必须传入ProceedingJoinPoint对象,并调用它的proceed()方法(执行目标方法)

  • Bean的Scope说明,Scope的种类

    • singleton:一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例

    • prototype:每次调用新建一个Bean的实例。

    • request:web项目中,给每一个http request新建一个Bean的实例。

    • Session:web项目中,给每一个http session新建一个Bean的实例。

  • @EnableAsync开启对异步任务的支持,这里他默认的线程池是一个无界的,如果任务比较多,会创建比较多的线程,通常情况下,我们需要重写他们对应线程池,此时需要implement AsyncConfigurer来进行处理

    • @Async:如果注解在类级别,则表明所有的方法都是异步方法,通常我们在使用时,会将注解放在方法上。

  • @EnableScheduling来开启对计划任务的支持(定时任务),在需要执行计划任务的方法上注解@Scheduled声明这是一个计划任务,其包含cron、fixDelay、fixRate等。

  • RequestMapping,映射器功能,控制请求路径,分模块开发,限制请求方法@GetMapping、@PostMapping

  • @InitBinder注解设置字符串的格式,如将前端传入的日期字符串转化为Date

  • @RequestBody,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象

  • @ResponseBody,将java的对象转换成json字符串的格式给前端解析,该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】

  • @RequestParam,前端传递的参数名称和业务方法中的参数名称不一样时使用

  • @ModelAttribute,回显数据

  • @Validated,参数校验器,用BindingResult对象接受验证结果,当验证不通过时BindingResult就会接受对应的错误提示信息

  • @PathVariable ,将URL中占位符参数{xx}绑定到处理器类的方法形参中@PathVariable(“xx“),两个参数名必须相同。RESTful接口,

  • @RestController 是一个组合注解,组合了@Controller和@ResponseBody,在使用时注意要和@Controller的使用区分开来

 

  • @SpringBootApplication,启动自动配置和自动扫描,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。是 @EnableAutoConfiguration@SpringBootConfiguration@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。核心功能是由@EnableAutoConfiguration来提供

  • @EnableAutoConfiguration,允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean

  • @Configuration,定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContextAnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器

  • @SpringBootConfiguration,是 @Configuration 注解的变体,只是用来修饰是 Spring Boot 配置而已,或者可利于 Spring Boot 后续的扩展

  • @ComponentScan,默认装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中

  • @Conditional,用来标识一个 Spring Bean 或者 Configuration 配置文件,当满足指定的条件才开启配置。实现按需加载的要求。其他@Conditional...注解

    @ConditionalOnBean,组合 `@Conditional` 注解,当容器中有指定的 Bean 才开启配置
    @ConditionalOnMissingBean,组合 `@Conditional` 注解,和 `@ConditionalOnBean` 注解相反,当容器中没有指定的 Bean 才开启配置
    @ConditionalOnClass,组合 `@Conditional` 注解,当容器中有指定的 Class 才开启配置
    @ConditionalOnMissingClass,组合 `@Conditional` 注解,和 `@ConditionalOnMissingClass` 注解相反,当容器中没有指定的 Class 才开启配置。
    @ConditionalOnWebApplication,组合 `@Conditional` 注解,当前项目类型是 WEB 项目才开启配置
    @ConditionalOnNotWebApplication,组合 `@Conditional` 注解,和 `@ConditionalOnWebApplication` 注解相反,当前项目类型不是 WEB 项目才开启配置
    @ConditionalOnExpression,组合 `@Conditional` 注解,当 SpEL 表达式为 true 时才开启配置

    * Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,能在运行时构建复杂表达式、存取对象图属性、对象方法调用等等,并且能与Spring功能完美整合,如能用来配置Bean定义。
    @ConditionalOnJava,组合 `@Conditional` 注解,当运行的 Java JVM 在指定的版本范围时才开启配置。
    @ConditionalOnResource,组合 `@Conditional` 注解,当类路径下有指定的资源才开启配置
    @ConditionalOnJndi,组合 `@Conditional` 注解,当指定的 JNDI 存在时才开启配置
    @ConditionalOnCloudPlatform,组合 `@Conditional` 注解,当指定的云平台激活时才开启配置。
    @ConditionalOnSingleCandidate,组合 `@Conditional` 注解,当指定的 class 在容器中只有一个 Bean,或者同时有多个但为首选时才开启配置。

     

  • @EnableConfigurationProperties,一般要配合 @ConfigurationProperties 注解使用,用来开启对 @ConfigurationProperties 注解配置 Bean 的支持,使使用 @ConfigurationProperties 注解的类生效。

    如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是获取不到properties 配置文件转化的bean。说白了 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。

  • @AutoConfigureAfter,用在自动配置类上面,表示该自动配置类需要在另外指定的自动配置类配置完之后。

  • @AutoConfigureBefore,这个和 @AutoConfigureAfter 注解使用相反,表示该自动配置类需要在另外指定的自动配置类配置之前。

  • @Import,用来导入一个或者多个 @Configuration 注解修饰的类(配置类),这在 Spring Boot 里面应用很多,有三种用法

    • 第一种用法:@Import({ 要导入的容器中的组件 } ):导入普通类,容器会自动注册这个组件,id默认是全类名

    • 第二种用法:ImportSelector:返回需要导入的组件的全类名数组,导入继承ImportSelecto的类,springboot底层用的特别多【重点

    • 第三种用法:ImportBeanDefinitionRegistrar:手动注册bean到容器,导入继承ImportBeanDefinitionRegistrar的类

  • @ImportResource,用来导入一个或者多个 Spring 配置文件

  • @PropertySource,引入配置文件@PropertySource("classpath:book.properties")

  • @Value注解 @Value("${key.id}")获取properties文件中的配置

  • @ConfigurationProperties,引入 @ConfigurationProperties(prefix = "book") 注解,并且配置了属性的前缀,此时会自动将 Spring 容器中对应的数据注入到对象对应的属性中,就不用通过 @Value 注解挨个注入了,减少工作量并且避免出错,可用在 @Configuration 注解类,或者 @Bean 注解方法上面。

  • Profile是spring用来针对不同的环境对不同的配置提供支持。定义不同的profile配置格式为application-{profile}.properties, 通过在application.properties文件中设置 spring.profiles.active=prod来指定活动的Profile。结合前面的在启动参数上动态指定的方式,实现不同环境的切换

  • @Order或者接口Ordered,定义Bean的加载顺序,参数为int型,值越小优先级越高,默认为最低优先级

  • @EnableTransactionManagement , 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 表明该方法需要事务支持

测试

  • @RunWith(SpringRunner.class), 是junit的注解,用于指定junit运行环境,是junit提供给其他框架测试环境接口扩展,为了便于使用spring的依赖注入,spring提供了org.springframework.test.context.junit4.SpringJUnit4ClassRunner作为Junit测试环境 , SpringRunner继承于SpringJUnit4ClassRunner,这是Spring框架基于Junit实现的基础类 @RunWith就是一个运行器 ,在测试开始的时候自动创建Spring的应用上下文。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器

  • @SpringBootTest()

    • 注解的类会使用SpringBootContextLoader类用于上下文加载, 这个类将会使用所配置的SpringBootApplication实体类作为入口,加载配置并初始化Spring上下文环境;

    • 可以支持自定义的配置,通过 Environment 属性设置;

    • 支持不同的 web 环境模式,可以是固定端口、随机端口、无端口几种模式

posted @ 2022-02-16 22:10  huiyii  阅读(49)  评论(0编辑  收藏  举报