spring
1、spring注解
1、@RequestParam:
获取参数的值,参数名可以不一致
2、@PathVariable:
1、获取rest风格参数的值,参数名可以不一致
2、如果路径中的变量与方法中的变量名一致,可直接使用@PathVariable;
3、如果二者不一致,则使用@PathVariable(Variable)显示指定要绑定的路径中的变量 。
4、@PathVariable只能绑定路径中的占位符参数,且路径中必须有参数。
3、@Configuration:
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext
类或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器
4、@Conditional(xxx.class):
这句代码可以标注在类上面,表示该类下面的所有@Bean都会启用配置,也可以标注在方法上面,只是对该方法启用配置。
5、@ConditionalOnClass:
是Springboot实现自动配置的重要支撑之一。其用途是判断当前classpath下是否存在指定类,若是则将当前的配置装载入spring容器
6、@ConditionalOnMissingClass:
某个class类路径上不存在的时候,才会实例化一个Bean
7、@ConditionalOnMissingClass:
某个class类路径上不存在的时候,才会实例化一个Bean
8、@ConditionalOnBean:
仅仅在当前上下文中存在某个对象时,才会实例化一个Bean
9、@ConditionalOnMissingBean:
该注解表示,如果存在它修饰的类的bean,则不需要再创建这个bean;可以给该注解传入参数例如@ConditionOnMissingBean(name = "example"),这个表示如果name为“example”的bean存在,这该注解修饰的代码块不执行。
10、@ConditionalOnExpression:
当表达式为true的时候,才会实例化一个Bean
11、@ConditionalOnNotWebApplication:
不是web应用
12、@Resource:
作用相当于@Autowired,只不过@Autowired按Type自动注入,而@Resource默认按 Name自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@Resource装配顺序
1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
13、@Qualifier:
如果service层有多个实现,spring不知道应该绑定哪个实现类,所以抛出了如上错误。这个时候就要用到@Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,我们修改调用代码,添加@Qualifier注解,需要注意的是@Qualifier的参数名称必须为我们之前定义@Service注解的名称之一!
14、@Lazy(true):
表示延迟初始化
15、@Component:
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
16、@PostConstruct:
用于指定初始化方法(用在方法上)
17、@PreDestory:
用于指定销毁方法(用在方法上)
18、@DependsOn:
定义Bean初始化及销毁时的顺序
19、@Primary:
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
20、@ControllerAdvice:
定义全局异常处理类