简单的理解spring的主要功能,就是当你当前的类需要别的类对象时,spring自动为你创建或者提供给你相应的对象!说的再简单点:你啥也不用管,需要啥对象,直接拿过来用!
【【【【【注:spring做这些指令中心就是,bean.xml!bean.xml是spring的核心!!bean.xml是spring的灵魂!重要的事说三遍!理解了bean.xml其实也就理解了spring】】】】】】】
具体怎么实现这个注入的呢?就是:spring自动调用当前类的构造函数或者setter方法,实现传递需要依赖的类对象!
名词解释:
依赖注入:spring把当前类(正在操作的)需要的其他类对象,传进来!
1.导入spring需要的类库。
2.通过构造函数
Beans.xml的总结:
一个类就对应此文件里的一个bean标签。
-
"textEditor" class="com.tutorialspoint.TextEditor"> -
"spellChecker"/> -
-
"exampleBean" class="examples.ExampleBean"> -
"0" value="2001"/> -
"1" value="Zara"/> -
-
- ///
-
"textEditor" class="com.tutorialspoint.TextEditor"> -
"spellChecker" ref="spellChecker"/> -
1.如果是通过构造函数依赖注入,那么就用constructor-arg ref="spellChecker"/>标签。这样spring就会依照bean的这个命令,去调用当前类带参数的构造函数并把创建号的被依赖类的对象传进去!
2.如果你想要向一个对象传递一个引用,你需要使用 标签的 ref 属性,如果你想要直接传递值,那么你应该使用如上所示的 value 属性。
3.如果你有许多的设值函数方法,那么在 XML 配置文件中使用 p-namespace 是非常方便的
-
"john-classic" class="com.example.Person"> -
"name" value="John Doe"/> -
"spouse" ref="jane"/> -
- ///转换
-
"john-classic" class="com.example.Person" - p:name="John Doe"
- p:spouse-ref="jane"/>
-
- ///你不应该区别指定原始值和带有 p-namespace 的对象引用。-ref 部分表明这不是一个直接的值,而是对另一个 bean 的引用。
【实操总结:】1.首先定义好bean.xml文件里的依赖关系2.如果是根据构造函数的,那么写构造函数的时候就带上被依赖对象,如果根据setter那么就要写一个无参构造函数,然后写出setter函数!完活!!!!!
细节:
1.正如你所知道的 Java 内部类是在其他类的范围内被定义的,同理,inner beans 是在其他 bean 的范围内定义的 bean。因此
-
-
"outerBean" class="..."> -
"target"> -
"innerBean" class="..."/> -
-
-
"outerBean" class="..."> -
"target"> -
"innerBean" class="..."/> -
-
2.想让spring在实例化类时传入集合参数怎么做呢?很简单,把相应的集合创建setter方法。然后
-
"javaCollection" class="com.tutorialspoint.JavaCollection"> - <property name="addressList">
- <list>
- <value>INDIAvalue>
- <ref bean="address1"/> //传递引用
- <value>USAvalue> //传递值
- <value>USAvalue>
- list>
- property>
、、、、、、、、、、、、、、、、、、、、、、、、、、、、
spring的注册功能。
@Autowired。在你任何需要自动装配的地方用这个标签,那么spring就去beans.xml中找对应的类去实例化。
@Qualifier 让spring知道,它必须去beans.xml中找相应的bean来完成注入。