Yuque Archive
寻常的路

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类不做任何修改,运行结果依旧。

参考: