在XML文件中进行配置、对象的创建呀、属性的赋值呀…全部在XML配置文件中配置。更像是配置开发
Bean 管理指的是两个操作
(1)在 spring 配置文件中,使用 bean 标签,标签里面添加对应属性,就可以实现对象创建
(2)在 bean 标签有很多属性,介绍常用的属性
(3)创建对象时候,默认也是执行无参数构造方法完成对象创建
DI:依赖注入,就是注入属性
友情提示:使用set方式进行属性的注入、需要在类中、手动填写setXXX
。如果使用lombok生成的setXXX、似乎不可以
定义Dog类
package com.zyz.spring5;
/**
* @author 静小文
* @version 1.0
* @data 2022/9/21 23:02
*/
public class Dog {
/**
* 创建属性
*/
private String name;
private String kind;
/**
* 创建对应的set方法
*/
public void setName(String name){
this.name = name;
}
public void setKind(String kind){
this.kind = kind;
}
public void testDog(){
System.out.println("小狗的品种是:"+ this.kind+",小狗的名字是:"+this.name);
}
}
编写配置文件
<!-- set方法注入属性-->
<bean id="dog" class="com.zyz.spring5.Dog">
<!--使用 property 完成属性注入
name:类里面属性名称
value:向属性注入的值
-->
<property name="kind" value="哈巴狗"/>
<property name="name" value="旺财"/>
</bean>
测试结果
Cat类
package com.zyz.spring5;
/**
* @author 静小文
* @version 1.0
* @data 2022/9/21 23:19
*/
public class Cat {
/**
* 创建属性
*/
private String name;
private String kind;
/**
* 有参构造函数
* @param name
* @param kind
*/
public Cat(String name,String kind){
this.kind = kind;
this.name = name;
}
public void testCat(){
System.out.println("小猫的品种是:"+ this.kind+",小猫的名字是:"+this.name);
}
}
配置文件
<!-- 有参函数构造属性-->
<bean id="cat" class="com.zyz.spring5.Cat">
<!--使用 property 完成属性注入
name:类里面属性名称
value:向属性注入的值
-->
<constructor-arg name="kind" value="波斯猫"/>
<constructor-arg name="name" value="招财猫"/>
</bean>
测试结果
不写value值、直接写null
测试结果
测试结果
如果特殊字符不进行转义、会报错哦
1、创建一个接口CatDao、该接口的实现类:CatDaoImpl
2、创建一个类CatService、在该类中调用CatDao接口中的方法
3、在xml配置文件中进行配置
CatDao
package com.zyz.spring5.dao;
/**
* @author Lenovo
* @version 1.0
* @data 2022/9/25 15:38
*/
public interface CatDao {
public void say();
}
CatDaoImpl
package com.zyz.spring5.dao;
/**
* @author Lenovo
* @version 1.0
* @data 2022/9/25 15:41
*/
public class CatDaoImpl implements CatDao{
@Override
public void say() {
System.out.println("CatDaoSay........");
}
}
CatService
package com.zyz.spring5.service;
import com.zyz.spring5.dao.CatDao;
/**
* @author Lenovo
* @version 1.0
* @data 2022/9/25 15:42
*/
public class CatService {
private CatDao catDao;
public void setCatDao(CatDao catDao){
this.catDao = catDao;
}
public void say(){
System.out.println("CatServiceSay........");
catDao.say();
}
}
xml配置文件
测试结果
比如:一对多关系。一个部门有多个员工。这里的一是部门、多是员工。可以将部门作为一个员工的属性(员工隶属于哪个部门)
部门类:Department
package com.zyz.spring5.dao;
/**
* @author Lenovo
* @version 1.0
* @data 2022/9/25 16:34
*/
public class Department {
private String dname;
public void setDname(String dname){
this.dname = dname;
}
@Override
public String toString() {
return "Department{" +
"dname='" + dname + '\'' +
'}';
}
}
员工类:Employee
package com.zyz.spring5.dao;
/**
* @author Lenovo
* @version 1.0
* @data 2022/9/25 16:35
*/
public class Employee {
private String ename;
private String gender;
/**
* 所属部门
*/
private Department department;
public void setEname(String ename){
this.ename = ename;
}
public void setGender(String gender){
this.gender = gender;
}
public void setDepartment(Department department){
this.department = department;
}
public void say(){
System.out.println("我的部门是:"+department+" 姓名:"+this.ename+" 性别:"+this.gender);
}
}
编写的配置类
测试结果
内部bean可以改为外部bean(外部bean叫容易维护)
测试结果