Spring之Bean装配
按照惯例,这里仍然想办法提供最简示例。
环境
使用IDEA新建Spring项目。
Bean装配
新建一个类,命名为A,写一个简单的方法:
src/spring/test/A.java
这个类再简单不过,包含一个方法,会在控制台打印出字符串消息。
然后在src目录新建config.xml,写一些简单的配置:
src/config.xml
beans标签声明一些头信息,其中的bean标签是使配置发挥作用的地方,id及为bean的唯一标识,class则是要装配为Bean的类的全限定名。
Bean装配的意义就在于,不需要显式实例化对象,而是从IOC容器中直接获取。
新建B类,在不实例化A类的情况下获取A的示例:
src/spring/test/B.java
直接运行B类,控制台打印出"这是A类"的消息,这便是Bean的装配。
Bean的设值注入
设值注入,即Bean标签中可配置Bean的初始参数。修改A类,为其增加一成员变量:
src/spring/test/A.java
注意必须为参数写入setter方法,这是默认的规定。A类中message的值为"消息1"。
修改配置文件:
src/config.xml
在bean标签中加入了property标签,name为要设值的属性名,value则为值。
再次运行B类,控制台打印出,message的值为消息2。
自动扫描装配Bean
删除或注释掉config.xml文件。
在A类上加一个注解:
注解声明A类是一个组件。类中的代码内容没有变。
在新建一个Config类,用于作为配置类,代替config.java:
src/spring/test/Config.java
这里使用两个注解,Configuration声明这是一个配置类,ComponentScan则用于开启Bean的自动扫描。(自动扫描也可以在xml配置文件中开启)
配置类中不需要写任何内容。自动扫描的意义就在于,只要是声明为组件的类,就会被自动装配到IOC。Config类中可配置要扫描的包。
最后是场景类B:
src/spring/test/B.java
B类的变化在于,原先从XML配置获取上下文环境,现在是从Annotation配置中获取。
运行结果和使用xml文件一致。
Bean注解注册一个名为"a"的Bean到IOC,方法返回一个示例。如果需要设值,调用setter方法即可。
Java代码装配Bean
这次可以把A类上的@Component注解删掉。它是用于自动扫描的。
Config类要做出一些修改,去掉了自动扫描的标签,取而代之的是一个Bean方法:
src/spring/test/Config.java
Bean注解标记的方法用于帮助装配Bean。
B类不做任何修改,运行结果依旧。
参考: