这章主要讲配置文件,String[],List,Map,Set,自定义对象怎么配置,bean 的作用域,自动装配,我定义一个Student类,大家想想对应的配置文件该怎么写?
一:配置
配置文件名字可以随便取,只要xml文件上面的规范是spring 的就行
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
(1).代码
public class Student {
private String name;
private Address addr;
private String[] books;
private List
hobbies;
private Map
cards;
private Set
games;
private String wife;
private Properties info;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void setBooks(String[] books) {
this.books = books;
}
public void setHobbies(List
hobbies) {
this.hobbies = hobbies;
}
public void setCards(Map
card) { this.cards = card; } public void setGames(Set
games) { this.games = games; } public void setWife(String wife) { this.wife = wife; } public void setInfo(Properties info) { this.info = info; } public void show(){ System.out.println("name="+name+" addr="+addr.getAddress()); System.out.println("books="); for(int i=0;i
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="addr" class="cn.sxt.vo.Address" scope="request">
<property name="address" value="北京西三旗"/>
</bean>
<bean id="student" class="cn.sxt.vo.Student">
<property name="name" value="刘德华"/>
<property name="addr" ref="addr"/>
<property name="books">
<array>
<value>金瓶梅</value>
<value>红楼梦之梦</value>
<value>雾都孤儿</value>
</array>
</property>
<property name="hobbies">
<list>
<value>羽毛球</value>
<value>乒乓球</value>
<value>玻璃球</value>
<value>台球球</value>
</list>
</property>
<property name="cards">
<map>
<entry key="中国银行" value="149127348932174"/>
<entry>
<key><value>建设银行</value></key>
<value>622710023478234234</value>
</entry>
</map>
</property>
<property name="games">
<set>
<value>lol</value>
<value>dota</value>
<value>cs1.6</value>
<value>dnf</value>
</set>
</property>
<property name="wife"><null/></property>
<property name="info">
<props>
<prop key="学号">2015052601</prop>
<prop key="sex">男</prop>
<prop key="name">小明</prop>
</props>
</property>
</bean>
<!-- p命名空间注入 属性依然要设置set方法 -->
<bean id="user" class="cn.sxt.vo.User" p:name="风清扬" p:age="230"/>
<!-- c命名空间注入要求有对应参数的构造方法 -->
<bean id="u1" class="cn.sxt.vo.User" c:name="nico" c:age="16"/>
</beans>
二:bean的作用域
singleton单列 整个容器中只有一个对象实例 默认是单列
prototype原型 每次获取bean都产生一个新的对象
request 每次请求时创建一个新的对象
session 在会话的范围内时一个对象
global session 只在portlet下有用,表示是application
application 在应用范围中一个对象
prototype原型 每次获取bean都产生一个新的对象
request 每次请求时创建一个新的对象
session 在会话的范围内时一个对象
global session 只在portlet下有用,表示是application
application 在应用范围中一个对象
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- bean的作用域
singleton单列 整个容器中只有一个对象实例 默认是单列
prototype原型 每次获取bean都产生一个新的对象
request 每次请求时创建一个新的对象
session 在会话的范围内时一个对象
global session 只在portlet下有用,表示是application
application 在应用范围中一个对象
-->
<bean id="addr" class="cn.sxt.vo.Address" scope="request">
<property name="address" value="北京西三旗"/>
</bean>
</beans>
想一想假如一个类的属性又一千个(一般没有,宝宝别怕),那么我们是不是要在配置文件里面写一千个属性的配置的代码,我滴个姑奶奶啊,表示我这种笔都买不起的高穷帅很无奈,这时候自动装配就起作用了,代码配置,我们可以看到配置文件中有这么一句
http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">
他是代表在整个配置文件中的bean都自动装配。
autowire:自动装配 简化spring配置,有下面几种模式可选
no不使用自动装配
byName 根据名称(set方法名来的)去查找相应的bean,如果有则装配上
byType 根据类型进行自动装配 不用管bean的id.但是同一种类型的bean只能有一个。建议慎用
constructor 当通过构造器 注入 实例化bean时 适用byType的方式 装配构造方法
no不使用自动装配
byName 根据名称(set方法名来的)去查找相应的bean,如果有则装配上
byType 根据类型进行自动装配 不用管bean的id.但是同一种类型的bean只能有一个。建议慎用
constructor 当通过构造器 注入 实例化bean时 适用byType的方式 装配构造方法
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">
<bean id="mysqlDao" class="cn.sxt.dao.impl.UserDaoMySqlImpl"/>
<bean id="service" class="cn.sxt.service.impl.UserServiceImpl" autowire="byName"/>
</beans>