Spring学习——IOC(2)

Spring的bean管理(xml方式)

 

1. Bean实例化的方式

Spring内部是通过配置文件(xml)创建对象的,bean实例化也就是对象的创建。在bean实例化的方式中,最重要的就是使用类的无参构造来创建。如果在原来的User类中增加了一个有参构造,那么运行测试代码就会报错,错误信息显示没有找到默认的构造函数,也就是无参构造函数。

Spring学习——IOC(2)_第1张图片

 

 2. Bean标签常用属性

(1)id:不能包含特殊符号,根据id值得到配置对象;

(2)class:创建对象所在类的全路径;

(3)name:功能与id属性一样,但是可以包含特殊符号,目前几乎不用;

(4)scope:

- sington:单例,scope默认值,只创建一次对象;

- prototype:多例;

- request:创建对象并放到request域中;

- session:创建对象并放到session域中;

- globalSession:创建对象并放到globalSession域中;

 1 import org.junit.Test;
 2 import org.springframework.context.ApplicationContext;
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 public class TestIOC {
 6     @Test
 7     public void testUser() {
 8         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
 9         User user1 = (User) context.getBean("user");
10         User user2 = (User) context.getBean("user");
11         System.out.println(user1);
12         System.out.println(user2);
13     }
14 }

 

3. 属性注入

(1)概念:创建对象时,为类中属性设置属性值;

(2)属性注入的方式(Spring框架只支持前两种):

- set方法注入

- 有参构造注入

- 接口注入

1 public class PropertyDemo1 { 
2     private String username;
3     public PropertyDemo1(String username) {
4         this.username = username;
5     }
6 }
<bean id="demo1" class="cn.itcast.property.PropertyDemo1">
    
    <constructor-arg name="username" value="Shawn">constructor-arg>
bean>
1 public class PropertyDemo2 {
2     private String username;
3     public void setUsername(String username) {
4         this.username = username;
5     }
6 }
<bean id="demo2" class="cn.itcast.property.PropertyDemo2">
        
        <property name="username" value="Kevin">property>
    bean>
beans>

 

 4. 注入对象类型属性

(1)创建service类和dao类

 1 public class UserService {
 2     // 定义dao属性
 3     private UserDao userDao;
 4     // 生成set方法
 5     public void setUserDao(UserDao userDao) {
 6         this.userDao = userDao;
 7     }    
 8     public void fun() {
 9         System.out.println("service");
10         userDao.fun();
11     }
12 }
1 public class UserDao {
2     public void fun() {
3         System.out.println("dao");
4     }
5 }

(2)测试方法

 1 import org.junit.Test;
 2 import org.springframework.context.ApplicationContext;
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 public class TestIOC {
 6 
 7     @Test
 8     public void testUser() {
 9         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
10         UserService userService = (UserService) context.getBean("userService");
11         userService.fun();
12     }
13 }

(3)配置文件

 1 xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 5     
 6     
 7     
 8     
 9         
10     <bean id="userDao" class="cn.itcast.ioc.UserDao">bean>
11     <bean id="userService" class="cn.itcast.ioc.UserService">
12         
13         
15         <property name="userDao" ref="userDao">property>
16     bean>
17 beans>

(4)运行结果

 

 

 

你可能感兴趣的:(Spring学习——IOC(2))