@Autowired :默认按类型装配,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@Resource :它的作用相当于 @Autowired,只不过** @Autowired 按 byType** 自动注入,面**@Resource 默认按 byName **自动注入,当找不到与名称匹配的bean才会按类型装配
@Controller:用于标注控制层组件。
@Service:用于标注业务层组件。
@Repository:标注一个DAO组件类。
@component: (把普通pojo实例化到spring容器中,相当于配置文件中的
)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
@Autowired + @Qualifier
获取bean,等于@Resource
1.2 SpringBoot相关注解
@SpringBootApplication
包含@Configuration、@EnableAutoConfiguration、@ComponentScan
通常用在启动类上。
@ComponentScan
组件扫描。如果扫描到有@Component @Controller @Service等这些注解的类,则把这些类注册为bean。
@Configuration
指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。
@EnableAutoConfiguration
让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。
@Slf4j
在类上添加@Slf4j注解,在方法中直接使用log。
@ImportResource
通过locations属性加载对应的xml配置文件,同时需要配合@Configuration注解一起使用,定义为配置类
@EnableScheduling
定时任务注解。
@EnableDiscoveryClient
基于spring-cloud-commons,并且在classpath中实现。
@EnableEurekaClient
基于spring-cloud-netflix,只能为eureka作用。
就是如果选用的注册中心是eureka推荐@EnableEurekaClient,如果是其他的注册中心推荐使用@EnableDiscoveryClient,如果classpath中添加了eureka,则它们的作用是一样的。
@PropertySource
可以知道@Value和@ConfigurationProperties都可以用于获取配置文件的属性值,不过有个细节容易被忽略,那就是,这两个注解在Springboot项目中都是获取默认配置文件的属性值,也就是application.yml或者application.properties的属性值
不过我们想要配属性的话,肯定都不能全都往默认配置文件里堆的,如果想引用其它配置文件的属性值,就可以使用本博客介绍的@PropertySource注解
@EnableEncryptableProperties
用于加密
@EnableTransactionManagement
Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可。
关于事务管理器,不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依赖,框架会默认注入 DataSourceTransactionManager 实例。如果你添加的是 spring-boot-starter-data-jpa 依赖,框架会默认注入 JpaTransactionManager 实例。
1.3 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。
1.4 面向切面相关
@Aspect
面向切面编程注解,Spring AOP 中用来自定义切面
@Before
方法前执行
@After
方法后执行
@Around
环绕执行
@Scheduled
执行计划
1.5 Dubbo相关常用注解
@Service
表示提供者
@Reference
表示消费者
@EnableDubbo
启用Dubbo整合配置
1.6 缓存
@Cacheable
最常用的一个,若缓存中没有对应键,则执行方法,并把返回值放入缓存,如果有则从缓存中取,不执行方法
@CacheEvict
删除缓存
@CachePut
修改缓存
@Caching
同时使用上面多个的时候使用
@CacheConfig
放在类上统一类中的其它缓存注解,如下相当于在这个类中的其它所有缓存注解都被默认加上了cacheNames = "",cacheManager = ""
1.7 @Value
使用@Value可以为属性字段赋值
1、基本数值
2、可以写SpEL; #{}
3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)
配置类
使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;
加载完外部的配置文件以后使用${}取出配置文件的值
@PropertySource(value={"classpath:/person.properties"})
@Configuration
public class MainConfigOfPropertyValues {
@Bean
public Person person(){
return new Person();
}
}