第6章 使用java Config 方式实现 SpringIoc

目录

6-1 java config-对象实例化

6-2 JavaConfig-对象依赖注入

6-1 java config-对象实例化

使用java代码来替代传统的xml文件

 使用java类来替代原有的xml文件

 创建演示用类

 分别创建 dao service controller

 

 UserService依赖于UserDao

 

 controller依赖于service

 将这三个类在ioc容器初始化的过程中完成对象的创建以及关联

因为不需要使用xml所以我们创建一个新的类config

 如何在ioc容器中放入bean呢?这里我们定义一些方法

 用new关键字完成对象的创建工作,为什么还要new 不要不他当成工程的一部分,把他当成配置文件

创建应用程序的入口

 创建的实际实现类不一样了,基于注解配置的应用程序上下文,传入的是config这个类

 打印容器中的对象

 控制台中包含了两个重要对象,第一个是config,userDao这个beanId本质就是我们刚才利用bean所描述的方法名,后面的就是我们创建的对象

 写好

 重新运行

 可以看到按照前后的顺序依次进行了实例化,并且利用方法名对bean进行了管理

6-2 JavaConfig-对象依赖注入

config如何完成对象的依赖注入呢?

如何完成Service依赖Dao Controller依赖Service

对于这个关联关系我们都是要依托于set方法,但是要set的对象却来自ioc容器

这里就需要设置bean所对应方法的参数了

依赖于dao我们只需要在参数中增加依赖对象

 在执行UserService方法的时候发现要注入一个参数UserDao,而这个参数名和我们刚才bean的id是相同的,所以就会自动的把userDao创建的bean注入到这个参数中,然后执行下列代码

将注入的dao放到set方法中,就完成了userService中userDao属性的设置

同理

 为了看清执行过程,增加一系列的sout

 

 运行

 

 注入类型是按类型注入还是名称注入呢?

 如果是这种情况

就会报错 

 

 解决方法

 就会为udao注入UserDao1

 java config和注解并不冲突

为了能够良好的兼容其他注解java类增加

 

 在ioc容器启动时不但去加载了当前的这些对象,还会去指定路径下扫描其他的组件类

 在启动时也会对employeeDao实例化

 如果想对其进行注入该怎么办呢?设置私有属性,增加setget

在方法上额外增加参数名,这样就会将employeeDao注入到参数中

 

好处:在编译阶段就会发现问题

坏处:毕竟是java的源代码,如果在发布以后,要调整必须要经过从新的编译

猜你喜欢

转载自blog.csdn.net/lonelyneet/article/details/125885772