希望年后可以找到工作(= ——=)
IOC–Bean
配置管理Bean的时候需要注意:
<bean name="dateFactory" class="Factory.MySimpleFactory" ></bean>
以上格式默认采用默认无参构造方法生成Bean,若配置有其他构造方法,且没有写无参构造方法,则创建Bean失败,运行时加载xml配置阶段报错。
如:需要用自定义构造函数,写法如下
public class Person {
String name;
int age;
List<String> hobby;
Map<String,List<String>> map;
// public Entity.Person(){
//
// }
public Person(){
}
public Person(String _name,int _age){
name=_name;
age=_age;
}
public Person(String _name,int _age,Map<String,String[]> _map){
name=_name;
age=_age;
}
public Person(String _name,int _age,List<String> _hobby){
name=_name;
age=_age;
hobby=_hobby;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setHobby(List<String> hobby) {
this.hobby = hobby;
}
public void setMap(Map<String, List<String>> map) {
this.map = map;
}
public void say(){
System.out.println("hello");
}
public void sayName(){
System.out.println("my name is "+name);
}
public void sayHobby(){
System.out.println(hobby);
}
public void OpenMap(String a){
System.out.println(map.get(a));
}
public void init(){
System.out.println("after init "+name);
}
private void PreDestory(){
System.out.println("before destory "+name);
}
}
<bean name="iocBean1" class="Entity.Person">
<constructor-arg name="_age" value="10"></constructor-arg>
<constructor-arg name="_name" value="wuyifan"></constructor-arg>
<constructor-arg name="_hobby">
<list>
<value>吃饭</value>
<value>打游戏</value>
<value>补番</value>
</list>
</constructor-arg>
<property name="map">
<map>
<entry key="taobao">
<list>
<value>淘宝</value>
<value>淘宝</value>
</list>
</entry>
</map>
</property>
</bean>
上方Person类的无参构造函数被注释掉了,此时根据想使用的构造函数的参数配置Bean的相关参数
如下:
<bean name="iocBean1" class="Entity.Person">
<constructor-arg name="_age" value="10"></constructor-arg>
<constructor-arg name="_name" value="wuyifan"></constructor-arg>
</bean>
配置方式
1.通过参数名配置参数
<constructor-arg name="_age" value="10"></constructor-arg>`
2.通过参数位置,起始为0
<constructor-arg index="0" value="10"></constructor-arg>
注意事项:参数为集合类型(Object[] , List<?>,set)时,参数使用标签
<constructor-arg index="0" >
<list>
<value>吃饭</value>
<value>打游戏</value>
<value>补番</value>
</list>
</constructor-arg>
参数为其他Bean时(Date、HashMap、自定义类型……)
<constructor-arg name="_age" ref="BeanId"></constructor-arg>