在Spring的配置文件中,bean的id屬性和name屬性可以相互替換。
(1)
<?xml version="1.0" encoding="UTF⑻"?>
<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⑵.5.xsd">
<!-- bean也能夠使用name來標識 -->
<bean name="u" class="com.zgy.impl.UserDAOImpl">
</bean>
<bean id="userService" class="com.zgy.service.UserService" scope="prototype">
<!-- <property name="userDAO" ref="u" /> -->
<constructor-arg>
<ref bean="u"/>
</constructor-arg>
</bean>
</beans>
(2)
<?xml version="1.0" encoding="UTF⑻"?>
<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⑵.5.xsd">
<!-- bean也能夠使用name來標識 -->
<bean name="u" class="com.zgy.impl.UserDAOImpl">
</bean>
<bean name="userService" class="com.zgy.service.UserService" scope="prototype">
<!-- <property name="userDAO" ref="u" /> -->
<constructor-arg>
<ref bean="u"/>
</constructor-arg>
</bean>
</beans>
可以在Spring的配置文件中配置簡單屬性的值
范例:
(1)UserDAOImpl中有兩個屬性
package com.bjsxt.dao.impl;
import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;
public class UserDAOImpl implements UserDAO {
/* (non-Javadoc)
* @see com.bjsxt.dao.UserDAO#save(com.bjsxt.model.User)
*/
private int daoId;
private String daoStatus;
public int getDaoId() {
return daoId;
}
public void setDaoId(int daoId) {
this.daoId = daoId;
}
public String getDaoStatus() {
return daoStatus;
}
public void setDaoStatus(String daoStatus) {
this.daoStatus = daoStatus;
}
public void save(User user) {
System.out.println("user saved!");
}
@Override
public String toString() {
return this.daoId + ":" + this.daoStatus;
}
}
(2)在配置文件中配置這兩個屬性的值
<?xml version="1.0" encoding="UTF⑻"?>
<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⑵.5.xsd">
<!-- bean也能夠使用name來標識 -->
<bean name="userDAO" class="com.zgy.impl.UserDAOImpl">
<property name="daoId" value="8"></property>
<property name="daoStatus" value="good"></property>
</bean>
<bean id="userService" class="com.zgy.service.UserService">
<!-- <property name="userDAO" ref="u" /> -->
<constructor-arg>
<ref bean="u"/>
</constructor-arg>
</bean>
</beans>
(3)使用的情況不多,1般自定義屬性的值不通過此方式賦值
Spring中的bean可以有以下幾種范圍:
1.singleton
單例,不論取多少次,獲得的都是1個對象
(1)
<?xml version="1.0" encoding="UTF⑻"?>
<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⑵.5.xsd">
<!-- bean也能夠使用name來標識 -->
<bean name="u" class="com.zgy.impl.UserDAOImpl">
</bean>
<bean name="userService" class="com.zgy.service.UserService" scope="singleton">
<!-- <property name="userDAO" ref="u" /> -->
<constructor-arg>
<ref bean="u"/>
</constructor-arg>
</bean>
</beans>
(2)測試方法:
package com.bjsxt.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zgy.model.User;
import com.zgy.service.UserService;
public class UserServiceTest {
@Test
public void testAdd() throws Exception {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
UserService userService2 = (UserService) applicationContext.getBean("userService");
System.out.println(userService == userService2);
User u = new User();
u.setName("zhangsan");
u.setPassword("zhangsan");
userService.add(u);
}
}
(3)結果:
true
user saved
2.prototype
每次獲得的都是不同的對象
(1)
<?xml version="1.0" encoding="UTF⑻"?>
<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⑵.5.xsd">
<!-- bean也能夠使用name來標識 -->
<bean name="u" class="com.zgy.impl.UserDAOImpl">
</bean>
<bean name="userService" class="com.zgy.service.UserService" scope="prototype">
<!-- <property name="userDAO" ref="u" /> -->
<constructor-arg>
<ref bean="u"/>
</constructor-arg>
</bean>
</beans>
(2)測試方法:
package com.bjsxt.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zgy.model.User;
import com.zgy.service.UserService;
public class UserServiceTest {
@Test
public void testAdd() throws Exception {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
UserService userService2 = (UserService) applicationContext.getBean("userService");
System.out.println(userService == userService2);
User u = new User();
u.setName("zhangsan");
u.setPassword("zhangsan");
userService.add(u);
}
}
(3)結果:
false
user saved
以下是與web相干的scope,但是與web相干的可以不使用spring來配置
3.request
4.session
5.Application