1. @Component
通知Spring为这个类创建bean。通过组件扫描实现,组件扫描默认不启动。
e.g. @Component(“testName”) 为当前bean指定名称。不指定则默认为类名的首字母小写
2. @ComponentScan
通知Spring扫描组件,默认扫描与当前类相同的包。
- 可指定basePackages属性,指定包名
- 可指定basePackageClasses属性,指定类
3. @SpringJUnit4ClassRunner
在测试开始的时候自动创建Spring的应用上下文
4. @ContextConfiguration
通知Spring在当前类中加载配置。e.g. @ContextConfiguration(class=OneConfigClass.class)
5. @Named
@Component的替代方案。大多数场景中可以互相替换
6. @Autowired
自动装配
可以将属性required设置为false,否则匹配不到bean时会抛出异常,需要进行null检查
- 为变量赋值
@Autowired
Person person; - 为方法赋值
@Autowired
public goToSchool(Person person)
7. @Inject
自动装配,大多数场景下与autowired可以互相替换
8. @Configuration
创建配置类
9. @Bean
- 可以给方法添加@Bean注解,这个注解会告诉Spring:这个方法会返回一个对象,该对象要注册为Spring应用上下文中的bean。
- 默认情况下,bean的ID与带有@Bean注解的方法名一致。可以通过设置name属性来手动重命名。
- 对于添加了@Bean注解的方法,Spring会拦截所有对它的调用,并确保直接返回已经创建好的bean,而不是每次调用都执行这个方法。
- 默认情况下,Spring中的bean都是单例的
10. @Profile
指定当前bean的激活场景
- e.g.
@Profile("dev")
@Bean
public DataSource......
- 激活profile的方法:
1、spring.profiles.active与spring.profiles.default
2、@ActiveProfiles(“dev”)
11. @Conditional
条件化实例化bean
e.g.
@Bean
@Conditional(MagicExistsCondition.class)
public MagicBean...
其中,MagicExistsCondition须继承接口Condition
12. @Primary
bean通过type进行自动装配,当有多个bean满足自动装配要求时,会导致NoUniqueBeanDefinitionException异常。 使用@Primary可以标示首选的bean。
当多个bean使用@Primary时,依然存在bean冲突的问题。
13. @Qualifier
限定bean,用于在注入的时候指定想要注入的是哪个bean。
1.基础用法
e.g
@Autowired
@Qualifier("oneid")
public void setBean(TestBean oneBean).....
@Bean
@Qualifier("oneid")
public class Person(){..........
2.进阶用法
@Target({ElementType.CONSTRUCTOR,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface Student{...}
在定义自定义注解时添加@Qualifier注解,这个注解就有了@Qualifier注解的特性
14. @PropertySource
加载指定的配置文件
e.g
@PropertySource("classpath:/com/test/resources/app.properties")
public class ExConfig{
@Autowired
Environment env;
public String test(){
return env.getProperty("article.title");
}
}
15. @Value
获取值,可结合属性占位符使用
@Value("#{article.title}")
String title;
16. @Valid
参数校验使用,使用此注解会告诉spring,要对这个对象进行校验。校验内容如下:
- @AssertFalse
被注解的元素必须为boolean类型,且值为false - @AssertTrue
被注解的元素必须为boolean类型,且值为true - @DecimalMax
被注解的元素必须为数字,值要<=给定的BigDecimalString值 - @DecimalMin
被注解的元素必须为数字,值要>=给定的BigDecimalString值 - @Digits
被注解的元素必须是数字,且它的值必须有指定的位数 - @Future
必须是一个将来的日期 - @Past
必须是一个过去的日期 - @Max
必须是数字,值要小于等于给定的值 - @Min
必须是数字,值要大于等于给定的值 - @NotNull
不能为null - @Null
必须为null - @Pattern
必须匹配给定的正则表达式 - @Size
必须是String、集合或数组,且长度要符合给定的范围