IOC是Spring框架的核心之一,指的是创建对象控制权的翻转,主要用于消减代码耦合问题 。
依赖注入是控制反转的另外一种说法,只是从不同的角度描述相同的概念。
是要实现依赖注入有两种方式:基于Spring配置文件、基于Spring注解类。通过依赖注入的方式可以使我们无需自己创建对象,需要什么对象可向spring容器直接拿。
一、基于Spring配置文件创建对象
配置文件applicationContext.xml
创建Spring配置文件applicationContext.xml
配置Bean
1.了解Bean基本配置
id:Bean在spring容器中的唯一标识
class:Bean实例的全限定名称
scope:①单例singleton:默认找的是无参构造创建对象,当容器创建时时,对象就被创建了
②多例prototype:当使用对象时,才创建新的对象实例
(此外,被spring容器管理的Bean默认是单例的)
2.Bean的依赖注入方式
(1)set方法注入
写一个Service层接口PhoneService
在实现类PhoneServiceImpl中为该字段phoneDao添加set方法(PhoneDao为dao层的一个接口)
在applicationContext.xml中添加以下配置
(2)构造方法注入
在PhoneServiceImpl实现类中写入有参、无参的构造方法
修改applicationContext.xml中phoneSerivce的注入方法为构造器注入
测试类
3.Bean依赖注入的基本数据类型
创建实体类HuaWeiPhone,属性如下:
生成get、set方法
(1)基本数据类型
写入huaWeiPhone Bean,注入数据
(2)集合数据类型
List
Map
Properties
测试类
此时我们已经在Spring容器中写入了对象,在测试类中创建容器之后需要什么对象可直接向容器要
输出结果
二、基于Spring配置文件搭建架构查询数据
使用Spring配置文件的方式配置Druid数据源、配置使用JdbcTemplate从数据库中查询数据、使用Spring配置方式搭建三层架构之间依赖。
1.配置Druid数据源
(1)创建Maven项目,导入依赖
(2)在resources文件夹下创建文件jdbc.properties
url最后的springdemo为数据库库名
username为数据库用户名
password为数据库用户密码
(3)spring容器加载properties文件
引入context命名空间和约束使用context:property-placeholder引入properties文件
配置数据源(连接池)
2.配置使用JdbcTemplate从数据库中查询数据
(1)创建实体类
创建一个实体类,例如上面的HuaWeiPhone
(2)配置JdbcTemplate到spring容器中
(3)在DataSourceTest测试类中编写测试方法testJdbcTemplate进行测试
3.搭建三层架构
(1)创建数据访问层:
创建dao包,在包下创建dao接口
实现类
(2)创建业务逻辑层
创建serivce包,在包下创建service接口
实实现类
(3)创建表示层
创建controller包,在包下创建controller类
(4)在Spring容器中配置三层之间的依赖关系
在applicationContext.xml中配置以下bean
(5)测试类
三、基于Spring注解方式搭建架构查询数据
如果有大量的Bean需要装配,会导致XML配置文件过大,不方便以后的升级和维护,因此,现在更青睐使用注解(annotation)的方式去装配Bean。
配置Bean的注解:
@Component:可以作用在任何层次上
@Repository:用于数据访问层(Dao)
@Service:用于业务逻辑层(Service)
@Controller:用于控制器层(Controller)
@Configure:用于配置作用的类
完成依赖注入的注解:
@Autowired:通过该注解可以消除setter和getter方法,默认按照Bean的类型进行装配
@Resource:和@Autowired功能是一样的,区别在于该注解默认是按照名称来装配注入的,通过name来指定Bean实例名称
@Qualifier:该注解与@Autowired注解配合使用,当@Autowired注解需要按照名称来装配注入时,使用该注解指定Bean实例名称
1.配置Druid数据源
(1)创建Maven项目,导入依赖
(2)在resources文件夹下创建文件jdbc.properties,如上同
(3)创建Spring配置类springConfig
(4)在Spring配置类使用@PropertySource注解加载properties文件
(5)使用@Bean注解配置数据源(连接池)
(6)测试类
2.配置使用JdbcTemplate从数据库中查询数据
(1)使用@Bean标签配置JdbcTemplate到spring容器中
(2)测试类
3.搭建三层架构
在dao层实现类加上@Repository注解,在需注入的依赖上加上@Autowired注解
在service层实现类加上@Service注解,在需注入的依赖上加上@Autowired注解
在controller类上加上@Controller注解,在需注入的依赖上加上@Autowired注解
在Spring配置类上加上@ComponentScan注解,扫描某个包下的所有类,这里主要是扫实体类
3.测试类
输出结果
总结
不管是以何种方式实现依赖注入或搭建架构查询数据,其核心思想都是向Spring容器中注入依赖关系及配置,然后只需在测试类中创建容器,再向容器拿,即可,无需另外创建。