spring1

来源:互联网 发布:windows能装mac系统吗 编辑:程序博客网 时间:2024/05/21 10:52

非侵入性:里面的java对象不依赖与SpringAPI

 

IOC容器:

 

在xml文件里配置id,全类名,属性

 

1  新建IOC容器

2  底层利用反射技术,从IOC容器里面获得javaBean

3 调用javaBean的方法

这样做将主动获取资源的方式改为了被动的接受了

 

学会如何配置IDE插件

 

================================================

IOC举例说明

如何分离接口和实现

接口:产生报表

实现:html,pdf的两个实现

工厂模式中的工厂必须单例

 

模拟Spring的IOC容器

 

1 创建IOC容器

1)读取Spring的xml文件

2)根据Spring的xml文件创建对应的两个bean对象

             htmlGeneratorReport对象

             GeneratorReportyService对象,

    把创建的连个对象放到一个map,如map.put("html",new htmlGeneratorReportor());

 

3)为需要注入属性的bean注入属性

   检查bean是否需要是否需要注入属性(检查bean有没有property有没有子节点)

 

 

 //如何巧妙的写一个工程模式

思路1

 

一个生成报表的接口   ReportGenerate

两个对应的接口的实现类: HtmlReportGenerate  PdfReportGenerate

 

一个ReportGenerateService类 里面有一个创建两个接口的实现类事例之一的方法

一个供测试的main类中提供了一个main方法

 

这是最原始的方法。既和接口耦合,又和实现类耦合。产生的对象的方法最原始,new了一个,需要什么对象,自己去创建

 

==================================

 

思路2

    

新增加一个factory   ,service只需要和接口耦合,和工厂耦合

工厂类实现的原则就是工厂单例,因为在一个应用当中只有一个工厂

数据源就是一个工厂,产生connection的最大的工厂

 

工厂是一个单例  实现单例的三原则:

1    单例对应的类中构造函数私有化,防止外面通过new来产生一个对象

2.   引用单例对象对象的变量必须全局唯一,即static类型的,且私有防止外边来调用

3    为类的外边提供一个获得这个单例的方法,这个方法必须是类方法,static修饰,这个方法必须公有,从外边可以访问

 

 

在factoy中产生的工厂是单例

 

里面含有一个产生对象的方法

实际上Spring的原理就是需要什么,让spring这个容器(工厂)注入就可以了。

====================================

模拟实现SpringIOC容器

1 创建IOC容器

 

1)读取beans.xml配置文件

2)根据beans.xnl文件使用反射技术创建对应的bean对象

    创建htmlReportGenerator对象;reportService对象;把创建的对象放到一个Map<string,object>map中。

3)为需要注入属性的bean注入属性

     检查所有的bean,看bean是否需要注入属性(bean中有没有property节点)。如需要注入,从map中获取对应的属性值,利用反射技术为

    其属性赋值即可。

 

 

 

 

 

 

原创粉丝点击