将原本在程序中手动创建对象的控制权,交由Spring框架来管理。
控制指的是创建对象的控制权。
反转指的是将对象控制权完全交由IoC容器,并由IoC来管理对象间的相互依赖关系。
Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。
3.简单的生活例子(工厂模式):假如你现在很想喝可乐,然后你试着去制作一瓶可乐:
是一样的。
@ComponentScan
属性basePackages
:用于指定要扫描的包。和该注解中的 value
属性作用一样。
获取容器:
ApplicationContext ac =
new AnnotationConfigApplicationContext(SpringConfiguration.class);
配置注解–@Import
:
用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration 注解。
属性value[]
:用于指定其他配置类的字节码。
创建对象注解–@Bean
:
该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring容器。
属性name
:给当前@Bean注解方法创建的对象指定一个名称(与 bean的 id一样)。
默认是当前方法名称。
加载配置文件注解–@PropertySource
:
此注解用于加载 .properties
文件中的配置。
属性value[]
:指定 properties文件位置。如果是在类路径下,需要写上类路径classpath
。
11.XML配置与注解的权衡分析
XML文件配置的优势:不涉及任何源码,修改后,无需重新编译与部署。
注解配置的优势:配置方便简单,维护方便,直接找到类就可以改变相应的配置。
使用场景分析:
如果项目所需的Bean大都来源于第三方,基于XML配置更好。 如果项目所需的Bean大都用户自我开发,基于注释配置更好。 12.IOC优劣势分析 IOC的优势大大降低了程序间的耦合性,将对象交给Spring容器,简化了开发,增强了可维护性。 IOC的一些不足:IOC的核心是反射,反射创建对象一定程度上,还是对效率有一定的影响,但目前影响已经不大,大概1-2倍的差距。本文暂不涉及Spring IOC实现的源码分析,仅解释了Spring IOC,和怎样去使用Spring IOC,后期会对Spring的IOC相关源码进行分析。
参考书籍:
《Spring实战》第四版 《SSM项目实战》感谢耐心的你看到了这,再次感谢!
ATFWUS --Writing By 2020–04-20