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
浙公网安备 33010602011771号