Spring的底层:容器注入组件,会自动装配其依赖的关系。(即,Ioc控制反转、DI依赖注入)
@Configuration
说明是一个配置类。位置在配置类名之上。
@Bean
在配置类中,注入person。id默认是方法名。
@Bean
public Person person(){
return new Person("lisi", 20);
}
测试类中
ApplicationContext applicationContext=new AnnotationConfigApplicationContext(配置类.class);
Person bean=applicationContext.getBean(Person.class);
ApplicationContext,就是容器。然后从容器中获取bean
@ComponentScan
包扫描。位置在配置类名之上(也见过在启动类之上)。
在指定的包下,凡是标注了@Controller、@Service、@Repository、@Component的组件,都会扫描进入容器中。
()内的意义:首先指明包的位置,然后指明这个包下的哪些组件不扫描,或者只扫描这个包下的某些组件。
@Scope
组件会被创建多少个?
单实例、多实例
位置,bean标签上下
@Lazy
仅仅针对单实例,因为默认情况下,容器创建时就装入了单实例。
@Conditional
满足指定的条件,才将组件注入容器。
@Import
给容器中注入组件的三种方式:
1.包扫描+@Contrller等4个注解,自定义类,在类上标注,然后包扫描
2.@Bean,导入第三方的类,类上没注解,在config类中注入bean
3.@import,快速注入
4.使用spring提供的FactoryBean(工厂bean)
config类的作用,就是之前的bean.xml,就是用来给容器中注入组件的。
bean的生命周期,省略。
@Value
给bean的属性赋值
1.基本数值
2.SpEL:#{},比如#{20-3},即17
3.取出配置文件中的值:${},指定配置文件的位置@PropertySource(…)
@Autowired
自动装配,spring定义的注解
即,依赖注入DI,注入各个组件的依赖关系。比如,controller组件中注入service组件。
除此之外,还支持@Resource和@Inject,这俩是java定义的DI注解
自定义组件想要使用Spring容器底层的组件,比如ApplicationContext、BeanFactory,需要自定义组件实现xxxAware接口。
@Profile
根据当前环境,动态地切换组件。比如,开发、测试、生产环境切换不同的环境配置组件。
首先要将组件注入容器中,后续才能使用Spring提供的强大功能,比如AOP、声明式事务、springmvc