一、注解的基本概念
Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。
二、常用注解
2.1 依赖注入相关的
@Repository 作用于数据访问层,向Ioc容器中注入组件;
@Service 作用于业务逻辑层,向Ioc容器中注入组件;
@Controller 作用于表现层,向Ioc容器中注入组件;
@Component 普通组件,可以被注入到spring容器进行管理;
@Resource(name="") 默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。
@Qualifier 按照名字注入
@Autowired 自动注入,默认按照byType进行注入,如果发现找到多个bean,则又按照byname进行查询,如果还是多个则抛出异常;
@ComponentScan 扫描特定路径下的类
@Scope 类的生命周期,默认是单例模式,即scope="singleton"。另外scope还有prototype(每次获取Bean的时候会有一个新的实例)、
request(表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效)、
session(表示会话,即在同一个会话中,被注解的Bean都是使用的同一个Bean,不同的会话使用不同的Bean)、
global session(每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。)作用域
2.2 Aop相关的
@Aspect 标识该类为切面类;
@Pointcut 定义切入点表达式,例如@Pointcut("execution(* org.study.service.impl..*.*(..))");
@Around 定义某个方法为环绕通知;
@Before 前置通知;
@AfterReturning 后置通知;
@AfterThrowing 异常通知;
@After 最终通知,不管异常还是正常,都会执行该通知;
@EnableAspectJAutoProxy 开启AOP注解;
2.3 读取配置相关
(1)@Configuration、@Bean :spring 3.0 引入的,和 @Configuration一起工作,用来表明当前类为一个配置类,可以在当前类中创建对象添加到ioc容器中,示例如:
@Configuration
public class ApplicationConfig {
@Bean(value = "helloService")
public HelloService helloService(){
return new HelloService();
}
}
@Value 读取配置文件的信息,例如:@Value("${jdbc.driver}");
@Import 加载其他配置类,例如:@Import(value = JdbcConfiguration.class);
@ImportResource 用来加载spring的配置文件,例如:@ImportResource("classpath:config.xml");
@PropertySource 和 @PropertySources 指定配置文件的信息,如:@PropertySource("classpath:jdbcConfig.properties");
@ConfigurationProperties springboot中的读取配置文件的配置,例如:@ConfigurationProperties(prefix = "spring.datasource");
2.4 springMvc相关的注解
@Controller 标识当前类为一个控制器;
@RestController 标识当前类为一个Rest风格的控制器,相当于@Controller和@RequestBody的结合;
@RequestMapping 用来处理请求地址映射的注解;
@RequestParam 绑定请求的参数值,例如:public String requestparam1(@RequestParam String username);
@RequestBody 放在方法上表示返回json类型的数据,放在方法参数里表示接受json类型的数据,并格式化为对象;
@PathVariable 可以用来映射URL中的占位符到目标方法的参数中;
@RequestHeader 绑定请求头的信息到参数中;
@CookieValue 用来获取cookie中的值;
@EnableTransactionManagement 开启事务的支持;
@Transactional 该方法或者类开启事务;
2.6 测试相关
@Runwith 指定一个运行器,如:@RunWith(SpringJUnit4ClassRunner.class);
@Test 标注该方法为一个测试方法;
2.7 缓存相关
@EnableCache 启用缓存
@Cacheable 添加缓存
@Cacheput 更新缓存
@CahceEvict 清除缓存
@Caching 缓存的复杂组合,相当于多个注解的组合
@CacheConfig 缓存的公共配置
三、总结
通过上述的注解,我们基本上掌握的spring开发的基本注解;最重要的还是活学活用,记在脑海里;