![名师讲坛: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=1739481233-VVDtjaoCn5PRSSqbz8eTbQF8oAn0S8KH-0-6d8094dc31dcc1ffffbc6986ff20d4bd)
2.【mldnspring-base项目】修改spring-base.xml配置文件,追加Emp程序类的Bean配置。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer520.jpg?sign=1739481233-adWiZf0RvQlMy95ysrkiQG0xJcfEr7Bq-0-78c69ba89d3555e4028e0279a80dbdc1)
本程序实现了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=1739481233-aKRll4Sx87bSJYtAEU6xf077XSiIjLc3-0-cc0f1f016c2e124fdb108c383feba6ec)
内部Bean只提供给一个属性使用,所以不用再配置id属性。
3.【mldnspring-base项目】编写测试程序类,实现Emp对象注入。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer521.jpg?sign=1739481233-1Gqk6VqcUdcmcm0L2YEll8FkGrQ3zY8l-0-f236c64fd42ba93f454dab0279a36ab7)
本程序通过Spring创建了Emp的实例化对象,由于所有的属性都已经在配置文件中定义了,所以注入后可以直接获取Bean对象的完整信息。
除了可以进行单独的Bean对象定义之外,也可以利用Spring配置文件实现Bean的引用配置。例如,假设某个雇员属于某个部门,可以得到如图3-1所示的类关联关系。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer548.jpg?sign=1739481233-tklhAqiZL8TMB5gxa5g83Bccp1l8rn6Q-0-2390e8c0b18bbb4067bab9d475ec6a11)
图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=1739481233-3KGa7xTq0vqkARn2hT1PbfCFhHbbtr89-0-ac2aeb3e4a6c8dfeb5697dd627fbc2f9)
5.【mldnspring-base项目】修改spring-base.xml配置,追加Bean关联配置。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer567.jpg?sign=1739481233-CKeC8ybzfCGZkKEoThrQdLOx5mfDV3LF-0-02417a5f7afcbbcaa90701f4ba183619)
本程序定义了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=1739481233-4xXLjFiL0YYyj9OCmvM3g2T5jJvIinBb-0-f0f2950430f5827761e6f0645a4811bd)
此时程序实现了关联对象的匹配,而对象之间的依赖关联也可以通过Spring配置文件清晰表达。这样,当进行关联关系修改时也会非常方便。