模块总述:
分为五个模块:诸如基本值,注入Bean对象,注入集合,注入spring表达式,注入null或者空字符串。
/**
* Java bean
* 规范
* 1 这个类必须有包
* 2 必须继承 Serializable
* 3 有无参的构造器
* 4 有get set 方法
*
* 注意:其实现在用注解的比较多,但是xml是最基本的。
*/
一.注入基本值
元素可以通过字符串指定属性或者构造器的值,容器会将字符串从
Java.lang.String类型转化为实际的属性或参数类型然后注入给bean
18
private String name;
private String age;
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
String str="applicationContext.xml";
ApplicationContext ac=
new ClassPathXmlApplicationContext(str);
Student s=ac.getBean("student",Student.class);
System.out.println(s.getAge()+"\n"+s.getName());
结果:
18
FontThrone
二.注入Bean对象
//交给容器管理,注册时,如果是Bean对象,要用ref引用
private Book book;
public Student() {
}
...
public Book getBook() {
return book;
}
public void setBook( Book book) {
this.book = book;
}
//之前的重复部分(创建ApplicationContext等)省略掉
System.out.println(s.getBook().getBookName());
结果:
平凡的世界
三.注入集合
张三
李四
王五
兰州
北京
长沙
private List list;
private Set set;
private Map map;
private Properties properties;
//注意导入的是until的包,而非sun的:import java.util.Properties;
public Message() {
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Set getSet() {
return set;
}
public void setSet(Set set) {
this.set = set;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
Message m=ac.getBean("message",Message.class);
List list=m.getList();
for(String ss:list){
System.out.println(ss);
}
Set set=m.getSet();
Iterator it=set.iterator();
while(it.hasNext()==true){
System.out.println(it.next());
System.out.println("11111");
}
结果:
兰州
北京
长沙
张三
11111
李四
11111
王五
11111
四.表达式注入
A a=ac.getBean("ddd",A.class);
System.out.println(a.getUser());
/*
* 注入表达式
Spring引入了一种表达式语言,在语法上与EL的语法很相似,用来读取一个bean中
的属性。
xml配置:
-->
类:
public class A implements Serializable {
private String user;
public A() {
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
执行:
A a=ac.getBean("ddd",A.class);
System.out.println(a.getUser());
* */
此时读取的是与配置的xml文件同一目录下的db.properties文件,它只有一句话的内容:user=scott
五.注入null或者空字符串
注入空值和字符串(了解内容)
给一个属性注入字符串
注入空值