注入一般分为三类:
-
设值注入:调用相关属性的set方法,完成赋值过程,是实际工作中用的最多的一种。
-
构造注入:调用相关的构造器完成的对象创建及其赋值过程,称为构造注入,但是实际工作中不常用
-
实现特定接口注入:该方式为侵入式编程,会污染代码,因此基本不用
命名空间注入
命名空间注入是相对于设值注入和构造注入的,是为这两种换了一种写法。p命名空间注入对应的是设值注入,c命名空间注入对应的是构造注入。
设值注入:
我们创建了两个类,分别为类的属性设置了setter方法和tostring方法,如下:
在容器里这样可以为属性赋值:
这样我们就可以获取为其赋的值,通过测试如下:
p命名空间注入(为设值注入换种写法):
构造注入:
我们在student类和school类只放有构造方法和tostring方法,如下:
在容器里配置赋值:
写法一:用index
写法二:用name(提倡用这种写):
写法三:什么也不写,一对一的写,前提位置要对应(这种不提倡):
c命名空间注入(为构造注入换种写法):
属性和成员变量的区别:
我们上面的name里写的是属性名,而不是成员变量名。
属性名就是set、get方法去掉set或get并且首字母变大写即为属性名,它是public的。
成员变量名就是定义的,它是private的。