按照传统的面向对象逻辑,每次我想利用printer对象来打印的时候,就必须要给printer对象里的成员变量message赋值,但我不想每次都这么麻烦,怎么办呢?
我们回到MessagePrinter类,在它的serMessage函数上加一行注解,@Autowired,这个注解的意思是自动调用setService函数。
这样,它就能帮我们把service和printer之间的关联关系创建出来了。
为了测试注解是否可用,我们回到ApplicationSpring类,把setMessage这行代码注释掉再运行看看。
既然setService这行代码没用了,那我们也就没必要把这个对象获取出来了,就把它也注释掉
结果执行成功
这里我们的流程是:
-
先进行Spring容器的初始化
-
然后从容器中拿到Printer对象
-
由于Service对象和Printer对象有了注解@Component,所以在Spring容器初始化时它就已经被初始化,再加上Printer对象里的setMessage函数也有了@Autowired注解,则service对象就自动与Printer对象绑定起来了,我们就可以直接用了。