昆明java培训
达内昆明广州春城路

18487146383

热门课程

Spring学习之Ioc控制反转

  • 时间:2016-08-31
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明Java培训班的老师知道,从开始接触spring起,听到最多的就是Ioc(控制反转)和AOP(面向切面编程)啦。Spring的官方文档给出了这样一个框架图。不过本篇要介绍的所谓的控制反转,就是通过core里面的bean以及context jar包实现的哦。其他的jar包会在之后的章节中讲到。

控制反转,也可以称之为依赖注入(dependency injection),指的是当依赖被创建,或从工厂里获得以后,其他类可以通过构造方法,工厂方法,或set方法得到此依赖。通俗一点的说,就是一个类里面依赖的创建及使用,不需要在类本身new出此依赖,只要注入即可使用。举个例子,我有一辆汽车,需要燃油才能发动,然而我总不能自己去开采燃油,我只需要去加油站加点油,不管你是中石油还是壳牌油,总之油注入进来了,车就可以发动了。这里的燃油就是一个依赖类,这样可以被注入的依赖类,我们称之为bean,而对bean进行初始化,配置和集成操作的,我们称之为Ioc容器(类似于加油站了)。Ioc容器的编译可以使用xml,Java注解或Java程序来实现。虽然本人更喜欢注解的方式(尤其是使用了Spring Boot),但是入门起见,还是用xml掌握一下基础知识再根据心情选方式吧~

那么问题来啦,bean到底是咋配置的呢?下面给出了简单的bean的定义结构

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="..." class="...">

<!-- collaborators and configuration for this bean go here -->

</bean>

<bean id="..." class="...">

<!-- collaborators and configuration for this bean go here -->

</bean>

<!-- more bean definitions go here -->

</beans>

这是一段简单的xml代码,可以看到beans里面定义了很多的bean,每个bean都映射到一个类,这些类就是你所要使用的依赖啦。下面我们来看容器和beans是怎么关联的。

ApplicationContext context =

new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});

这里的ApplicationContext是context jar包里面的容器接口,它读取了两个xml文件作为容器的配置,来完成各种bean的创建与关联。

让我们来实际操作一下,首先定义两个xml的文件

service.xml(service里面有一个依赖叫做petStore,而petStore里面又有两个依赖accountDao和itemDao)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- services -->

<bean id="petStore" class="com.dabingguozi.generaltest.pojo.PetStoreService">

<property ame="accountDAO" ref="accountDAO"/>

<property name="itemDAO" ref="itemDAO"/>

<!-- additional collaborators and configuration for this bean go here -->

</bean>

<!-- more bean definitions for services go here -->

</beans>

daos.xml(service中petStore所注入的依赖accountDao和itemDao在这里定义)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="accountDAO"

class="com.dabingguozi.generaltest.pojo.AccountDAO">

<!-- additional collaborators and configuration for this bean go here -->

</bean>

<bean id="itemDAO" class="com.dabingguozi.generaltest.pojo.ItemDAO">

<!-- additional collaborators and configuration for this bean go here -->

</bean>

<!-- more bean definitions for data access objects go here -->

</beans>

最后,不要忘记了,在Java里面定义你的三个类(PetStoreService.java, ItemDAO.java, AccountDAO.java注意要包含set方法)和你的主程序(如下)

public class App {

public static void main(String[] a){

ApplicationContext context =

new ClassPathXmlApplicationContext(new String[] {"daos.xml", "services.xml"});

// retrieve configured instance

PetStoreService service = context.getBean("petStore", PetStoreService.class);

// use configured instance

List<String> userList = service.getUsernameList();

System.out.print(userList);

}

}

了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

上一篇:请求动态资源servlet
下一篇:使用JDBC从数据库中查询数据

昆明Java培训班《Java分布式数据库的未来》

昆明java培训班:为什么java工程师薪资这么高?

昆明java培训班:你所不知道的java秘密

昆明java培训班;如何认识Java Web技术

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货