IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> IOC操作Bean管理(基于xml方式) -> 正文阅读

[Java知识库]IOC操作Bean管理(基于xml方式)

一,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)属性包含特殊符号

第一种方法:把<>进行转义&lt,&gt

第二种方法:把特殊符号内容写到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

请多多支持!!!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:22:29  更:2021-09-04 17:24:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:33:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码