五.Spring Bean管理(IOC体现)
1.基于xml需要spring管理的类
bean 配置需要 spring 管理的类
- id 生成的对象名
- class 全类名
- name 对象别名,可以为多个
- scope:
- singleton(默认值):在 Spring 中只存在一个 bean 实例, 单例模式.
- prototype:原型 getBean()的时候都会 new Bean()
- request:每次 http 请求都会创建一个 bean, 仅用于 WebApplicationContext 环境
- session:同一个 http session 共享一个 Bean, 不同 Session 使用不同的 Bean, 使用环境同上
spring.xml配置文件:
<?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">
<!--
配置我们项目中的类,配置进来后spring就会对其进行管理(生成对象,存储)
由spring框架生成的对象称之为一个bean(特指spring框架创建的对象,他会添加额外的功能)
id: 生成对象的标识
class: 类的地址(全类名)
name: 对象别名,通过name也可以获取对象
scope: 范围,作用域
singleton: 单例的 整个应用程序只创建一次,多次获取时同一个,在spring容器启动时就创建
prototype: 原型的(多例) 每次获取时,会创建一个新的对象
<bean id="user" name="user1,user2" class="com.ffyc.spring.model.User" scope="singleton"></bean>
-->
<!--
创建对象 并 为对象属性注入值
方式有两种:
1.构造方法 (相对少)
<bean id="user" class="com.ffyc.spring.model.User">
<constructor-arg name="name" value="张三"></constructor-arg>
<constructor-arg name="age" value="20"></constructor-arg>
<constructor-arg type="java.lang.String" value="张三"></constructor-arg>
<constructor-arg type="java.lang.Integer" value="22"></constructor-arg>
</bean>
2.set方法
<property name="name" value="jim"></property>
<property name="age" value="30"></property>
-->
<bean id="user" class="com.ffyc.spring.model.User">
<property name="name" value="jim"></property>
<property name="age" value="30"></property>
<property name="list">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
</bean>
<!-- spring管理了UserDao UserService-->
<bean id="userDao" class="com.ffyc.spring.dao.UserDao"></bean>
<bean id="userService" class="com.ffyc.spring.service.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
注:注意其中的set注入方式,以及list属性中的数据注入方式
java类:
package com.ffyc.spring.model;
import java.util.List;
public class User {
private String name;
private Integer age;
private List<Integer> list;
public User() {
System.out.println("user无参构造");
}
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("setName");
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge