Spring 局部
1. 申明 bean 的注解
@Component 组件,没有明确的角色
@Service 在业务逻辑层应用(service 层)
@Repository 在数据拜访层应用(dao 层)
@Controller 在展示层应用,控制器的申明
2. 注入 bean 的注解
@Autowired:由 Spring 提供 它能够对类成员变量、办法及构造函数进行标注,实现主动拆卸的工作
@Qualifier 指定注入 Bean 的名称 如果容器中有一个以上匹配的 Bean 时,则能够通过 @Qualifier 注解限定注入的 Bean 名称
@Scope 注解来显式指定 Bean 作用范畴
@Value:注入根本数据类型和 String 类型数据的
@Resource:间接依照 Bean 的 id 注入,如果依据 id 无奈找到则依据类型进行查找。
都能够注解在 set 办法和属性上,举荐注解在属性上(高深莫测,少写代码)。
3.java 配置类相干注解
@Configuration 申明以后类为配置类,相当于 xml 模式的 Spring 配置(类上)
@Bean 注解在办法上,申明以后办法的返回值为一个 bean,代替 xml 中的形式(办法上)
@Configuration 申明以后类为配置类,其中外部组合了 @Component 注解,表明这个类是一个 bean(类上)
@ComponentScan 用于对 Component 进行扫描,相当于 xml 中的(类上)
@WishlyConfiguration 为 @Configuration 与 @ComponentScan 的组合注解,能够代替这两个注解
4. 切面(AOP)相干注解
Spring 反对 AspectJ 的注解式切面编程。
@Aspect 申明一个切面(类上)应用 @After、@Before、@Around 定义建言(advice),可间接将拦挡规定(切点)作为参数。
@After 在办法执行之后执行(办法上)@Before 在办法执行之前执行(办法上)@Around 在办法执行之前与之后执行(办法上)
@PointCut 申明切点 在 java 配置类中应用 @EnableAspectJAutoProxy 注解开启 Spring 对 AspectJ 代理的反对(类上)
5.@Bean:该注解只能写在办法上,表明应用此办法创立一个对象,并且放入 spring 容器
@PostConstruct:用于指定初始化办法
@PreDestroy:用于指定销毁办法
@Scope:指定 bean 的作用范畴(singleton、prototype、request、session、globalsession)。
Singleton(单例, 一个 Spring 容器中只有一个 bean 实例,默认模式), Protetype(每次调用新建一个 bean), Request(web 我的项目中,给每个 http request 新建一个 bean), Session(web 我的项目中,给每个 http session 新建一个 bean), GlobalSession(给每一个 global http session 新建一个 Bean 实例)
@StepScope 在 Spring Batch 中还有波及
@PostConstruct 由 JSR-250 提供,在构造函数执行完之后执行,等价于 xml 配置文件中 bean 的 initMethod
@PreDestory 由 JSR-250 提供,在 Bean 销毁之前执行,等价于 xml 配置文件中 bean 的 destroyMethod
6. 环境切换
@Profile 通过设定 Environment 的 ActiveProfiles 来设定以后 context 须要应用的配置环境。(类或办法上)
@Conditional Spring4 中能够应用此注解定义条件话的 bean,通过实现 Condition 接口,并重写 matches 办法,从而决定该 bean 是否被实例化。(办法上)
7. 异步相干
@EnableAsync 配置类中,通过此注解开启对异步工作的反对,叙事性 AsyncConfigurer 接口(类上)
@Async 在理论执行的 bean 办法应用该注解来申明其是一个异步工作(办法上或类上所有的办法都将异步,须要 @EnableAsync 开启异步工作)
8. 定时工作相干
@PropertySource:用于加载.properties 文件中的配置。例如咱们配置数据源时,能够把连贯数据库的信息写到 properties 配置文件中,就能够应用此注解指定 properties 配置文件的地位。
@EnableScheduling 在配置类上应用,开启打算工作的反对(类上)
@Scheduled 来申明这是一个工作,包含 cron,fixDelay,fixRate 等类型(办法上,需先开启打算工作的反对)
9.@Enable* 注解阐明
这些注解次要用来开启对 xxx 的反对。@EnableAspectJAutoProxy 开启对 AspectJ 主动代理的反对
@EnableAsync 开启异步办法的反对
@EnableScheduling 开启打算工作的反对
@EnableWebMvc 开启 Web MVC 的配置反对
@EnableConfigurationProperties 开启对 @ConfigurationProperties 注解配置 Bean 的反对
@EnableJpaRepositories 开启对 SpringData JPA Repository 的反对
@EnableTransactionManagement 开启注解式事务的反对
@EnableTransactionManagement 开启注解式事务的反对
@EnableCaching 开启注解式的缓存反对
10. 测试相干注解
@RunWith 运行器,Spring 中通常用于对 JUnit 的反对
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration 用来加载配置 ApplicationContext,其中 classes 属性用来加载配置类
@ContextConfiguration(classes={TestConfig.class})
SpringMVC 局部
@EnableWebMvc 在配置类中开启 Web MVC 的配置反对,如一些 ViewResolver 或者 MessageConverter 等,若无此句,重写 WebMvcConfigurerAdapter 办法(用于对 SpringMVC 的配置)。
@Controller 申明该类为 SpringMVC 中的 Controller
@RequestMapping 用于映射 Web 申请,包含拜访门路和参数(类或办法上)
@ResponseBody 反对将返回值放在 response 内,而不是一个页面,通常用户返回 json 数据(返回值旁或办法上)
@RequestBody 容许 request 的参数在 request 体中,而不是在间接连贯在地址前面。(放在参数前)
@PathVariable 用于接管门路参数,比方 @RequestMapping(“/hello/{name}”)申明的门路,将注解放在参数中前,即可获取该值,通常作为 Restful 的接口实现办法。
@RestController 该注解为一个组合注解,相当于 @Controller 和 @ResponseBody 的组合,注解在类上,意味着,该 Controller 的所有办法都默认加上了 @ResponseBody。
@ControllerAdvice 通过该注解,咱们能够将对于控制器的全局配置搁置在同一个地位,注解了 @Controller 的类的办法可应用 @ExceptionHandler、@InitBinder、@ModelAttribute 注解到办法上,这对所有注解了 @RequestMapping 的控制器内的办法无效。
@ExceptionHandler 用于全局解决控制器里的异样
@InitBinder 用来设置 WebDataBinder,WebDataBinder 用来主动绑定前台申请参数到 Model 中。
@ModelAttribute 原本的作用是绑定键值对到 Model 里,在 @ControllerAdvice 中是让全局的 @RequestMapping 都能取得在此处设置的键值对。
@Mapper 注解的的作用
1: 为了把 mapper 这个 DAO 交給 Spring 治理
2: 为了不再写 mapper 映射文件
3: 为了给 mapper 接口 主动依据一个增加 @Mapper 注解的接口生成一个实现类
@Param 注解
办法参数多余一个时尽量应用 @Param 注解进行润饰并指定名字,而后在 Mapper 文件中便能够通过相似 #{username}形式进行获取,否则只能通过#{arg0},#{arg1}或者#{param1},#{param2}等形式进行获取。
当办法中的参数利用在动静 SQL 中时无论多少个参数,尽量应用 @Param 注解进行润饰并定义。