-
@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注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建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 环境模式,可以是固定端口、随机端口、无端口几种模式
-