Spring Bean注解:

@ComponentScan:定义扫描的路径,Spring启动时根据扫描路径扫描并装配组件类。

@Component:标注Spring组件。(@Component代表泛指组件)

@Repository:标注Spring组件。(@Repository用于标注数据访问组件)

@Service:标注Spring组件。(@Service用于业务逻辑层组件)

@Controller:标注Spring组件。(@Service用于表现层组件)

@Bean:创建bean组件,bean的id为标记方法的方法名。

不同于@Component,@Bean在方法上标记。

@Scope:指定bean的作用域

  • singleton : 单例。

  • prototype:每次请求返回一个新实例(多例)。

  • request:一次请求,然后销毁。

  • session:一次会话,然后销毁。

  • global session:全局会话

@Required:表示bean属性值必须填充

@PostConstruct:被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。

@PreDestory:被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次

被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。

@Resource:由JSR-250提供:默认按名称自动注入,也提供按照类型注入

  • @Resource:先按名称注入,为空时再根据类型注入
  • @Resource(name=""):按名称自动注入
  • @Resource(type=""):按照类型注入

@Inject:由JSR-330提供,根据类型装配

@Named:@Inject搭配@Named,按名称注入

搭配@Named:@Inject默认按类型注入,搭配@Named可按名称注入

@Autowired:由Spring提供,只按照类型装配,

@Qualifier:@Autowired搭配@Qualifier,按名称注入

搭配@Qualifier:@Autowired默认按类型注入,搭配@Qualifier可按名称注入

@Primary:当自动装配有多个匹配的 Bean 时,被标注的 Bean 将作为首选,若无标注则抛出异常。

@Lazy:延迟初始化

Spring MVC注解

@EnableWebMvc:在配置类中开启Web MVC的配置支持

效果和xml配置mvc:annotation-driven/ 一样

@Controller:用于定义控制器类, 通常搭配 @RequestMapping使用。

@RestController:用于标注控制层组件,效果等同于@ResponseBody和@Controller的组合。

@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。

@GetMapping:相当于@RequestMapping(method = RequestMethod.GET)
@PostMapping:相当于@RequestMapping(method = RequestMethod.POST)
@PutMapping:相当于@RequestMapping(method = RequestMethod.PUT)
@DeleteMapping:相当于@RequestMapping(method = RequestMethod.DELETE)

@RequestParam:从请求参数中获取变量

@PathVariable:从请求路径获表达式中取变量

@RequestBody:从消息体中读取内容。例如:读取raw+ JSON格式内容

没有@ResponseBody注解,则默认获取form或url参数变量

@ResponseBody:直接返回消息体内容,例如,返回JSON格式内容

没有@ResponseBody注解,则默认返回为modelView页面的路径

@ModelAttribute:

  • 标记在方法上:如果方法有返回值,则自动将该返回值加入到ModelMap中。
  • 标记在方法的参数:将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中。

@InitBinder:在@RequestMapping注解方法执行之前,初始化数据绑定器

@SessionAttributes:在类定义上标注,通过属性名指定需要放到会 话中的属性

@ControllerAdvice:组件类,统一处理异常组件类。

@ExceptionHandler:@ControllerAdvice类的异常处理方法。

Spring配置注解

@Import:用来导入其他配置类。

@ImportResource:用来加载资源配置文件

@ProtertySource:properties配置文件中的值存储到Spring的 Environment中,Environment接口提供方法去读取配置文件中的值,参数是properties文件中定义的key值

@Configuration:定义配置组件类

@Value:注入application.properties配置的属性的值。

例如


@Configuration
@PropertySource("classpath:jdbc.properties")
public class PropertiesWithJavaConfig {

   @Value(${jdbc.driver})
   private String driver;

   @Value(${jdbc.url})
   private String url;

   @Value(${jdbc.username})
   private String username;

   @Value(${jdbc.password})
   private String password;

   @Bean
   public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
      return new PropertySourcesPlaceholderConfigurer();
   }
}

@Profile: 应用在类或者方法上,按照 profile 环境(dev,prod, test)的配置进行装配。

应用在类上:Profile环境激活时才会装载类。

应用在方法上,Profile环境激活时才会执行方法。

end

Spring boot注解:

@SpringBootApplication:

在springboot启动类上使用,申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。

@EnableAutoConfiguration:SpringBoot启用自动配置(auto-configuration)

@ConfigurationProperties:读取properties文件并自动封装成实体类

@EnableConfigurationProperties:使配置的注解类生效,并注册为bean组件。

@Conditional

  • @ConditionalOnBean:当上下文中有指定Bean的条件下进行实例化。
  • @ConditionalOnMissingBean:当上下文没有指定Bean的条件下进行实例化。
  • @ConditionalOnClass:当classpath类路径下有指定类的条件下进行实例化。
  • @ConditionalOnMissingClass:当类路径下没有指定类的条件下进行实例化。
  • @ConditionalOnWebApplication:当项目本身是一个Web项目时进行实例化。
  • @ConditionalOnNotWebApplication:当项目本身不是一个Web项目时进行实例化。
  • @ConditionalOnProperty:当指定的属性有指定的值时进行实例化。
  • @ConditionalOnExpression:基于SpEL表达式的条件判断。
  • @ConditionalOnJava:当JVM版本为指定的版本范围时进行实例化。
  • @ConditionalOnResource:当类路径下有指定的资源时进行实例化。
  • @ConditionalOnJndi:在JNDI存在时触发实例化。
  • @ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个,或者有多个但是指定了首选的Bean时触发实例化。

end

异步和任务相关

@EnableAsync 配置类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口(类上)

@Async 在实际执行的bean方法使用该注解来申明其是一个异步任务

@EnableScheduling 在配置类上使用,开启计划任务的支持(类上)

@Scheduled 来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)

切面(AOP)相关注解

@EnableAspectJAutoProxy :使用注解开启 Spring对切面编程的支持。

@Aspect:声明一个切面
@PointCut:声明切点
@After :在方法执行之后执行
@Before:在方法执行之前执行
@Around:在方法执行之前与之后执行

JPA注解

@Entity:实体类标注。

@Table:数据库表标注。

@Id:表示该属性为主键。

@Column:表示该属性为数据库字段。

@GeneratedValue: 主键生成策略

主键生成策略

@Transient:忽略字段。表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。

@OneToOne:一对一

@OneToMany:一对多

@ManyToOne:多对一

@ManyToMany:多对多

@JoinColumn:关联字段

@Embedded

@MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。

@NoRepositoryBean:一般用作父类的repository,有这个注解,spring不会去实例化该repository。

@EnableJpaRepositories 开启对SpringData JPA Repository的支持

@EnableTransactionManagement 开启注解式事务的支持

@Transactional:标记于类或者方法,开启事务

Mybatis注解

@MapperScan:定义Mybatis扫描的路径。

@Param:Mapper 方法传入多个参数时给参数指定别名

@Select:标注Select方法执行的SQL 语句

@Insert:标注Insert方法执行的SQL 语句

@Update:标注Update方法执行的SQL 语句

@Delete:标注Delete方法执行的SQL 语句

缓存

@EnableCaching:开启Spring注解式的缓存支持
@CachePut:支持缓存的存储和更新
@Cacheable:支持缓存的读取
@CacheEvict:支持缓存的删除

Lombok注解

@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j2 :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象,和@Log4j注解类似
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
@RequiredArgsConstructor:部分参数构造器
@EqualsAndHashCode:默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。
@toString:生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
@NoArgsConstructor, and @AllArgsConstructor
@val:注解在属性上,如果注解了,就是设置为final类型
@NonNull:注解在属性上,如果注解了,就必须不能为Null

测试相关注解

@SpringBootTest
@RunWith
@WebAppConfiguration
@ContextConfiguratiom
@Before
@Test

 posted on 2019-07-10 10:19  猛练自然强  阅读(1074)  评论(0)    收藏  举报