Spring中的IOC

IOC(Inversion(反转)Of Control):控制反转;

控制:资源的获取方式;

  主动式(要什么资源都自己创建即可):

    BookServlet{

      BookService bs=new BookService();

      AirPlane ap=new AirPlane();//复杂对象的创建是比较庞大的工程

    }

  被动式(资源的获取不是我们自己创建,而是交给一个容器来创建和设置):

    BookServlet{

      BookService bs;

      public void test01(){

        bs.checkout();

      }

    }

容器:管理所有的组件(有功能的类);假设,BookService受容器管理,容器可以自动的探查出哪些组件(类)需要用到另写组件(类);容器帮我们创建BookService对象,并把BookService对象赋值过去;

容器:主动的new资源变为被动的接受资源;

DI:(Dependencey Injection)依赖注入;

    容器能知道哪个组件(类)运行的时候,需要另外一个类(组件);容器通过反射的形式,将容器中准备好的BookService对象注入(利用反射给属性赋值)到BookServlet

只要是容器管理的组件,都能使用容器提供的强大功能


HelloWorld;(通过各种方式给容器中注册对象)

以前都是自己new对象,现在所有的对象交给容器创建;给容器中注册组件

框架编程的流程

1)、导包

核心容器

  spring-beans-5.2.3.RELEASE.jar

  spring-context-5.2.3.RELEASE.jar

  spring-core-5.2.3.RELEASE.jar

  spring-expression-5.2.3.RELEASE.jar

  commons-logging-1.2.jar

Spring运行的时候依赖一个日志包,没有就报错

2)、写配置

  spring的配置文件中,集合了spring的ioc容器的所有组件

  创建一个Spring Bean Configuration File(Spring的bean配置文件)

3)、测试

  


new ClassPathXmlApplicationContext("spring-config.xml");意思是IOC容器的配置文件在类路径下
FileSystemXmlApplicationContext("F://spring-config.xml");IOC容器的配置文件在磁盘路径下
1)、组件的创建工作,是由容器完成

2)、容器中对象的创建在容器创建完成的时候就已经创建好了
3)、同一个组件在IOC容器中是单实例的,容器启动完成前就已经准备好了
4)、IOC容器在创建这个组件对象的时候,(property)会利用setter方法为javaBean的属性进行赋值

5)、javaBean的属性名是由什么决定的?
     getter/setter方法是属性名;set去掉后面那一串首字母小写就是属性名
 
 
 
原文地址:https://www.cnblogs.com/xing-29391/p/12342980.html