一,IOC操作bean管理
什么是bean管理
????????Bean管理指的是两个操作
????????(1)Spring创建对象
????????(2)Spring注入属性
Bean管理操作有两种方法
????????(1)基于xml配置文件实现
????????(2)基于注解方式实现
二,具体方法实现普通类型注入
1,?基于xml方式创建对象????????????????
? ? ? ? (1)在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
? ? ? ? ?(2)在bean标签有很多属性,介绍常用属性
*id属性:唯一标识
*class属性:类全路径(类包路径)
*name:与id相同,可用特殊标识符,现在几乎不用
????????(3) 创建对象时候,默认是执行无参数构造方法完成对象创建
2,基于xml方式注入属性
(1)DI依赖注入,就是注入属性(IOC中具体实现,它就表示依赖注入或者注入属性,在创建对象的基础之上完成)
3,第一种注入方式:使用set方法进行注入
(1)创建类,定义属性和对应的set方法
private String name;
private String author;
public void setName(String name) {
this.name = name;
}
public void setAuthor(String author) {
this.author = author;
}
?(2)在spring配置文件配置对象创建,配置属性注入
<!-- set方法注入属性-->
<bean id="book" class="ssp_Spring.Book">
<!-- 使用property进行属性注入
name:类里面属性名称
vallue:向属性注入的值
-->
<property name="name" value="web"></property>
<property name="author" value="李白"></property>
</bean>
4,第二种注入方法,使用有参构造进行注入
????????(1)创建类,定义属性,创建属性对应的有参构造方法
private String oname;
private String address;
public Orders(String oname, String address) {
this.oname = oname;
this.address = address;
}
????????(2)在spring配置文件中进行配置
<bean id="orders" class="ssp_Spring.Orders">
<constructor-arg name="oname" value="电脑"></constructor-arg>
<constructor-arg name="address" value="China"></constructor-arg>
</bean>
//还有一个index属性 第几个参数再用value赋值即可
5,p名称空间注入(了解)
(1)使用p名称空间注入,可以简化基于xml配置方式
????????第一步添加p名称空间在配置文件中
xmlns:p="http://www.springframework.org/schema/p"
????????第二步 进行属性注入,在bean标签里面进行操作
<bean id="book" class="ssp_Spring.Book" p:name="web" p:author="孙某">
三,特殊类型注入
1,字面量
? ? ? ? (1)null值
<property name="address"><null/></property>
? ? ? ? (2)属性包含特殊符号
第一种方法:把<>进行转义<,>
第二种方法:把特殊符号内容写到CADTA
<property name="address"><value><![CDATA[<<长沙>>]]></value></property>
2,注入属性-外部bean
(1)创建两个类service类和dao类
(2)在service调用dao里面的方法
(3)在Spring配置文件中进行配置
public class UserService {
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void add() {
System.out.println("UserService........");
userDAO.Update();
//创建UserDAO对象
//UserDAO userDao=newUserDAOImpl();
//userDao.Update;
}
}
name属性:类里面属性名称;
ref属性:级联的标签id;
bean id="user" class="ssp_Spring.Service.UserService">
<property name="userDAO" ref="userDAOImpl"></property>
</bean>
<bean id="userDAOImpl" class="ssp_Spring.Dao.UserDAOImpl"></bean>
3,注入属性-内部bean和级联赋值
(1)一对多关系,部门和员工
????????一个部门有多个员工,一个员工属于一个部门
????????部门是一,员工是多
(2)在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示
????????//部门类
public class Dept {
private String dname;
public void setDname(String dname) {
this.dname = dname;
}
@Override
public String toString() {
return "Dept{" +
"dname='" + dname + '\'' +
'}';
}
}
????????//员工类
public class Emp {
private String ename;
private String esex;
private Dept dept;
public void setEname(String ename) {
this.ename = ename;
}
public Dept getDept() {
return dept;
}
public void setEsex(String esex) {
this.esex = esex;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public void add(){
System.out.println(ename+"...."+esex+"...."+dept);
}
}
(3)在Spring配置文件中配置
????????内部bean
<bean id="emp" class="ssp_Spring.Bean.Emp">
<property name="ename" value="lucy"></property>
<property name="esex" value="女"></property>
<property name="dept" >
<bean id="dep" class="ssp_Spring.Bean.Dept">
<property name="dname" value="财务部"></property>
</bean>
</property>
</bean>
4,注入属性-级联复制
(1)第一种写法
<bean id="emp" class="ssp_Spring.Bean.emp">
<property name="ename" value="lucy"></property>
<property name="esex" value="女"></property>
<property name="d" ref="dep"></property>
</bean>
<bean id="dep" class="ssp_Spring.Bean.dept">
<property name="dept" value="安保部"></property>
</bean>
(2)第二种写法
//员工属于某一个部门,使用对象形式表示
<bean id="emp" class="ssp_Spring.Bean.Emp">
<!-—设置两个普通属性-->
<property name="ename" value="lucy"></property>
<property name="esex" value="女"></property>
<!-—级联赋值-->
<property name="dept" ref="dep"></property>
<property name="dept.dname" value="技术部"></property>
</bean>
<bean id="dep" class="ssp_Spring.Bean.Dept"></bean>
四,其他类型属性
1,注入数组类型属性
2,注入List集合类型属性
3,注入Map集合类型属性
public class Stu {
private String[] courses;
private List<String> list;
private Map<String,String> maps;
private Set<String > sets;
private List<Course> list1;
public void setList1(List<Course> list1) {
this.list1 = list1;
}
public void setCourses(String[] courses) {
this.courses = courses;
}
public void setList(List<String> list) {
this.list = list;
}
public void setMaps(Map<String, String> maps) {
this.maps = maps;
}
public void setSets(Set<String> sets) {
this.sets = sets;
}
public void test(){
System.out.println(Arrays.toString(courses));
System.out.println(list);
System.out.println(maps);
System.out.println(sets);
System.out.println(list1);
}
}
(2)在spring配置文件中进行配置
<bean id="stu" class="ssp_Spring.Stu">
<property name="courses">
<array>
<value>数学</value>
<value>语文</value>
</array>
</property>
<property name="list">
<list>
<value>英语</value>
<value>物理</value>
</list>
</property>
<property name="maps">
<map>
<entry key="web" value="孙某"></entry>
<entry key="java" value="韩某"></entry>
</map>
</property>
<property name="sets">
<set>
<value>化学</value>
<value>生物</value>
</set>
</property>
<property name="list1">
<list>
<ref bean="course"></ref>
<ref bean="course1"></ref>
</list>
</property>
</bean>
<bean id="course" class="ssp_Spring.Course">
<property name="course" value="语文"></property>
</bean>
<bean id="course1" class="ssp_Spring.Course">
<property name="course" value="英语"></property>
</bean>
4,在集合里面设置对象类型值
? ? ? ? course类
public class Course {
private String course;
public void setCourse(String course) {
this.course = course;
}
@Override
public String toString() {
return "Course{" +
"course='" + course + '\'' +
'}';
}
}
<property name="list1">
<list>
<ref bean="course"></ref>
<ref bean="course1"></ref>
</list>
</property>
</bean>
<bean id="course" class="ssp_Spring.Course">
<property name="course" value="语文"></property>
</bean>
<bean id="course1" class="ssp_Spring.Course">
<property name="course" value="英语"></property>
</bean>
5,把集合注入部分提取出来
(1)在spring配置文件中引入名称空间util
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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
(2)使用util标签完成list集合注入提取
<util:list id="booklist">
<value>金瓶梅</value>
<value>阿甘正传</value>
<value>阿衰</value>
</util:list>
//使用提取的出来的list
<bean id="book" class="ssp_Spring.Book">
<property name="booklist" ref="booklist"></property>
</bean>
?ref是提取出来的id
请多多支持!!!
|