![名师讲坛:Spring实战开发(Redis+SpringDataJPA+SpringMVC+SpringSecurity)](https://wfqqreader-1252317822.image.myqcloud.com/cover/156/29977156/b_29977156.jpg)
3.1 Bean基本管理
Spring容器之中,类对象需要交由Spring统一管理。在Spring配置中,除了可以定义类的基本处理逻辑外,还可以实现属性的注入处理。
1.【mldnspring-base项目】创建Emp.java的程序类,实现常用属性定义。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer494.jpg?sign=1739514676-g97HAzb7ydmM8X3b4onOX5P7AcseYifd-0-23480be2a07a9263476037921b45345c)
2.【mldnspring-base项目】修改spring-base.xml配置文件,追加Emp程序类的Bean配置。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer520.jpg?sign=1739514676-wvnsIWOYfAE0jxSzZYB9kSnosNJw3HIw-0-8f5798240ce0f31e691e6e076d3ddeeb)
本程序实现了Emp类的Bean配置,并且采用<property>元素设置了类对象中要保存的属性,使用value设置了属性的具体数据(只能是常用类型,如String、int、Integer等)。由于hiredate属于java.util.Date类型,所以本例将系统的Date类也定义为Bean对象,随后通过ref进行引用配置。
提示:采用内部Bean进行配置。
以上程序使用了两个配置Bean,并且利用语句<property name="hiredate" ref="hiredateObject"/>实现了Bean的依赖关系。如果不想配置为两个,可以采用内部Bean定义形式处理。
范例:采用内部Bean配置。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer522.jpg?sign=1739514676-l719XTkxHkQBq0K2ycHwO9V3IZwB7cjw-0-6ee470369b58233f10e57eead8f930bd)
内部Bean只提供给一个属性使用,所以不用再配置id属性。
3.【mldnspring-base项目】编写测试程序类,实现Emp对象注入。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer521.jpg?sign=1739514676-2TstcnrReFkSNobsmQfvTmGg5SPOS6si-0-0eb147853c0b5d490e4234eb83bb89af)
本程序通过Spring创建了Emp的实例化对象,由于所有的属性都已经在配置文件中定义了,所以注入后可以直接获取Bean对象的完整信息。
除了可以进行单独的Bean对象定义之外,也可以利用Spring配置文件实现Bean的引用配置。例如,假设某个雇员属于某个部门,可以得到如图3-1所示的类关联关系。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer548.jpg?sign=1739514676-pKCxE8VtHbWszwQgCOV3mQtjEH53fOwk-0-f94b1dda6308adccf5e5720848a5337b)
图3-1 类关联关系
提示:关于数据转型。
进行Spring配置时,所有配置内容均是以字符串形式出现的。常用的基本数据类型可以自动实现类型转换,例如,10会自动转为int或Integer。如果要设置的属性类型是布尔型,则可匹配的内容有多个,如0(false)和1(true)、off(false)和on(true)、true和false等。
4.【mldnspring-base项目】创建Dept.java程序类,同时修改Emp.java类,追加关联配置。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer547.jpg?sign=1739514676-EmWc1MbTrZwyJkaWT8MGmM13FEx45uPJ-0-72268b6e7cf3c012324665ba64865608)
5.【mldnspring-base项目】修改spring-base.xml配置,追加Bean关联配置。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer567.jpg?sign=1739514676-PyV4gbBmDBaMOVBolvSteTVqPxgWi8me-0-96b76050d71145a4fa4ef3f1b9b5d4e9)
本程序定义了Dept类对象id="dept",而后在定义Emp类对象时通过ref可以实例化Bean对象引用,这样就实现了关联配置。
提示:Spring拥有完善的反射处理机制。
上述配置,如果读者对于反射机制非常熟悉的话,也可以通过Class、Method类对象,利用setter方法进行反射处理。但要想将其做到通用性,则还需要花费一些功夫。正是因为Spring拥有完善的反射处理机制,所以能有效提高开发效率。
6.【mldnspring-base项目】在编写测试类时,可以通过Emp类对象找到Dept类对象,也可以直接将Dept类对象注入到程序中进行获取。本测试程序将只注入Emp类对象。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer568.jpg?sign=1739514676-QuiT9HXFs0yjA8MOTstkfuMiaDdTwGXt-0-6874f659defb844c0fb3c6594ad8cd79)
此时程序实现了关联对象的匹配,而对象之间的依赖关联也可以通过Spring配置文件清晰表达。这样,当进行关联关系修改时也会非常方便。