1、@ComponentScan
组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。
@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。
2、@Repository
定义DAO层Bean。
@Repository注解修饰哪个类,则表明这个类具有对对象进行CRUD(增删改查)的功能,而且@Repository是@Component注解的一个派生品,所以被@Repository注解的类可以自动的被@ComponentScan 通过路径扫描给找到。(这也在一定程度上解释了,为什么被@Repository注解的类也能@Autowired)
3、@Autowired注解和@Resource区别
- @Autowired默认按类型进行装配
- 当接口有多个实现类的时候,如果仅使用@Autowired注解的话会报错
- @Autowired可以结合@Qualifier使用,来达到@Resource的效果
- @Resource默认按照名称进行装配。
- 默认先按 byName的方式进行匹配,如果匹配不到,再按 byType的方式进行匹配
下面两种写法效果一样:
写法一:@Autowired结合@Qualifier使用
@Autowired
@Qualifier("clusterSyncer")
private VpsSyncService clusterSyncer;
写法二:直接用@Resource
@Resource(name = "clusterSyncer")
private VpsSyncService clusterSyncer;
4、@Bean
相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
5、@RequestParam
将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值
public ModelAndView test16(@RequestParam("name")String name){
··············
}
6、@PathVariable
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过
@PathVariable(“xxx”) 绑定到操作方法的入参中。
使用@PathVariable时,URL是这样的:http://host:port/path/参数值
@GetMapping("/getUserById/{name}")
public User getUser(@PathVariable("name") String name){
return userService.selectUser(name);
}
若方法参数名称和需要绑定的uri中变量名称一致时,可以简写:
@GetMapping("/getUser/{name}")
public User getUser(@PathVariable String name){
return userService.selectUser(name);
}
7、@ConfigurationProperties
总结:Spring Boot之@ConfigurationProperties_小魏的博客的博客-CSDN博客
8、@Transactional
@Transactional 是声明式事务管理 编程中使用的注解
9、@Value
总结:Spring Boot之@Value_小魏的博客的博客-CSDN博客
10、@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
11、@Scope
@Scope在和@Component注解一起修饰在类上,作为类级别注解时,@Scope表示该类实例的范围,在和@Bean一起修饰在方法上,作为方法级别注解时,@Scope表示该方法返回的实例的范围。
如:@Scope("prototype")
值有:
- singleton:单例,Spring中bean的实例默认都是单例的,IOC容器启动的时候就会调用方法创建对象,以后每次获取都是从容器当中拿同一个对象(map当中)。
- prototype:原型范围,这个使用较少,多实例,IOC容器启动创建的时候,并不会创建对象放在容器在容器当中,当你需要的时候,需要从容器当中取该对象的时候,就会创建。
- session:会话,同一个session创建一个实例
- request:请求,同一个请求创建一个实例
12、@PostConstruct
相当于init-method,使用在方法上,当Bean初始化时执行。
@PostConstruct该注解被用来修饰一个非静态的void()方法。
被@PostConstruct注解的方法,将会在依赖注入完成后被自动调用,并且只会被服务器执行一次
13、@PreDestroy
相当于destory-method,使用在方法上,当Bean销毁时执行。
在对象实例被容器移除的时候,会回调调用@PreDestroy标记的方法,通常用来释放该实例占用的资源。
14、@Profiles
Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。
通过@Profile注解匹配active参数,动态加载内部配置 。
.@Profile注解使用范围:@Configration 和 @Component 注解的类及其方法,其中包括继承了@Component的注解:@Service、@Controller、@Repository等…
我们除application.properties外,还可以根据命名约定( 命名格式:application-{profile}.properties)来配置,如果active赋予的参数没有与使用该命名约定格式文件相匹配的话,app则会默认从名为application-default.properties 的配置文件加载配置。
如:spring.profiles.active=hello-world,sender,dev 有三个参数,其中 dev 正好匹配下面配置中的application-dev.properties 配置文件,所以app启动时,项目会先从application-dev.properties加载配置,再从application.properties配置文件加载配置,如果有重复的配置,则会以application.properties的配置为准。
指定使用