spring bean 集合是怎样注入的

2024-12-01 08:22:54
推荐回答(1个)
回答1:

1.通过构造函数注入值
beans.xml



对象类中要声明构造函数
public Employee(String name){System.out.println("Employee(String name)函数被调用..");this.name = name;}public Employee(){System.out.println("Employee()函数被调用..");}public Employee(String name,int age) {System.out.println("Employee(String name, intage) 函数被调用..");this.name = name;this.age = age;}注:spring会根据构造参数的个数自动选择构造函数
2.通过属性值
如哥//dog为对象
3.自动装配

(1) byName的用法:



顺平







原理图:

(2) byType:byType:寻找和属性类型相同的bean,找不到,装不上,找到多个抛异常。
(3) constructor:
说明 : 查找和bean的构造参数一致的一个或
多个bean,若找不到或找到多个,抛异常。按照参数的类型装配

(4) autodetect

说明 :
(3)和(2)之间选一个方式。不确定
性的处理与(3)和(2)一致。
(5) defualt
这个需要在
当你在指定了default-atuowrite后,所有的bean的默认的autowire就是指定的装配方法;
如果没有在 没有 defualt-autorwire=“指定” ,则默认是
defualt-autorwire=”no”
(6) no: 不自动装配

二、使用spring的特殊bean,(包括bean生命周期中的接口)

1.分散bean

(1)类对象
DBUtils
public class DBUtils {
private String url;
private String name;
private String password;
private String drivername;

(2)db.properties属性文件

name=ru
password=123456
url=jdbc:oracle:thin:@127.0.0.1:1521:hsp
drivername=oracle\:jdbc\:driver\:OracleDirver
(3)bean.xml


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsd">





${name}


${password}


${url}


${drivername}




2.这些在bean生命周器可能用到

四。使用注解方式注入属性值

1.


如果不实用注解方式的话可以这样


2.

3.在employeeService类中,使用

在EmployeeService 的属性sessionFactory上面添加一个注解@Resource,这样就是使用byName的方式自动注入