1.setter方式注入(依赖于无参构造器)
A。基本类型
public class HelloBean { private String name; private int age; public String sayHello(){ return "hello "+name +",your age is" + age; } ............. } 配置文件applicationContext.xmlterry
其中的property用来指定属性名,通过get/set方法去掉get/set首字母小写设置。value为值,基本数据类型自动转换
B。引用类型
string1
使用ref标签来直接引用已配置的bean的name。
C。集合
list1 list1 list3 set1 set1 set3 prop1 prop2 prop3
2.构造器注入(必须有对应的构造器)
类型注入
String1
参数索引注入
String1
3.自动注入,会自动按照规则装配,例如type或者name或者构造器。
4.继承注入–适合生成不同属性值的同一bean
首先要求父类的bean的Abstract属性为true(默认为false),注意,如设置abstract为true,无法获取其bean,与抽象类类似
然后子bean如下配置
5.通过静态工厂
通过类中的静态方法直接得到想要的bean,方法需要静态,并返回所需类对象
//静态工厂 ﹤bean id="sayhello2" class="test.service.impl.HelloBeanFactory" factory-method="createHelloBean"/﹥ ``` 6.实例工厂 与普通类类似,当会获得一个对象的工厂类的对象,然后由工厂对象生成所需对象 7.bean实现FactoryBean接口实现三个方法
@Override
public Double getObject() throws Exception {
return 12.0;
}
@Override
public Class getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return false;
}
其中getObject方法返回所需bean对象,getObjectType返回对象类型,isSingleton返回是否为单例
配置:
“`
8.注意:所以的bean默认都是单例的,如需要非单例如下
scope用来声明IOC容器中的对象应该处的限定场景或者说该对象的存活空间。默认为singleton。起初只有singleton和prototype两种,singleton为单例,而prototype每次请求对象都会生成一个新的对象返回。
又引入了另外三种scope类型,即request,session和global session类型
request和session与WEB中类似,并只能在WEB工程中使用。