1, 通过spring来获取一个工具的实例

2, 通过spring进行属性注入

  setter方法注入

自动延期phpSpring框架反射机制注入单例模式主动装载延迟加载 SQL

布局器注入

接口注入

上面的代码中,ClassA依赖于InterfaceB的实现,如何得到InterfaceB实现类的实例?传统的方法是在代码中创建InterfaceB实现类的实例,并将起授予clzB。

而这样一来,ClassA在编译期即依赖于InterfaceB的实现。
为了将调用者与实现者在编译期分离,于是有了上面的代码,我们根据预先在配置文件中设定的实现类的类名,动态加载实现类,并通过InterfaceB逼迫转型后为ClassA所用。

这便是接口注入的一个最原始的雏形。

而对付一个Type1型IOC容器而言,加载接口实现并创建实在例的事情由容器完成,如J2EE开拓中常用的Context.lookup(ServletContext.getXXX),都是Type1型IOC的表现形式。

Apache Avalon是一个范例的Type1型IOC容器。

p标记的利用

<bean p:username=\公众\"大众></bean>

3, 将一个工具注入到另一个工具<ref bean=\"大众...\公众>

用户有一个部门

部门有多个用户

model:

配置文件:

测试:

4, AutoWired(byType, byName)

autowire

自动装载:

byName根据名字自动注入

user1的bean中并没有dept属性,但是还是打印出了这个属性,由于它会找到这个类,然后在配置文件中找到和该属性同名的id,并自动注入

byType根据类型自动装载,用法同等

须要把稳,如果根据类型自动装载,应只有一个该类型,否则会无发找到,报错

autowire默认default,指的是根据<beans>声明中得来选择方法

5, scope, lazy-init, init-method, destroy-method(相称的不主要)

scope=\"大众singleton(单例) / prototype(原型)\公众

默认情形下Spring中定义的Bean因此单例模式创建的。

在GoF中的单例模式是指一个ClassLoader中只存在类一个实例。

而在Spring中的单例实际上更确切的说该当是:

1.每个Spring Container中定义的Bean只存在一个实例

2.每个Bean定义只存在一个实例。

lazy-init (一开始不初始化,用到的时候才初始化)

init-method=\"大众init\公众 destory-method=\公众destory\公众 不要和prototype一起利用

类被初始化的时候调用init,被消亡的时候调用destory

正常运行的结果只有一个init和destroy,虽然两个service实例化,但是默认是单例,加了scope=prototype就运行不正常了,结果两个init,没有destroy,缘故原由未知。

首先我们该当知道:

一、spring Bean的浸染域:scope=singleton(默认,单例,天生一个实例)

二、spring Bean的浸染域:scope=prototype(多线程, 天生多个实例)

三、单例模式,默认在程序初始化的时候实例化(lazy-init=”false”)

四、prototype,getBean的时候才是实例化

五、lazy-init 只对单例模式起浸染,对 prototype 不起浸染(由于 prototype 默认就不是程序初始化的时候实例化的)