spring基础之pojo和javaBean及依赖注入

pojo值普通java对象,没有业务逻辑,只包含私有属性,和访问这些私有属性的get,set方法。没有继承任何类,没有实现任何接口,更没有被其他框架侵入。

bean指可重用组件,javaBean及java语言编写的可重用组件bean。可序列化(实现了serializable接口)。

依赖注入这个词让人望而生畏,但事实证明依赖注入并不像它听上去那么复杂,在项目中应用DI依赖注入(接口方式)你会发现你的代码变得简单并且更容易测试和理解。

(常见的依赖注入有三种:接口注入,setter方法注入,构造函数注入。

构造函数注入的特点:

/*以装配信息(对象创建和对象组装(注入)的信息)为入参创建spring上下文(spring容器)*/  或叫
/*以bean创建信息和bean组装信息为入参创建spring上下文(spring容器)*/

DI依赖注入(加IOC容器)是控制反转IOC思想的实现方式之一,ServiceLocator服务定位器也可以实现控制反转来消除类之间的依赖)

任何一个有实际意义的应用都由多个类组成,按照传统,每个对象负责管理与自己相互协作的对象的引用。由此也导致高度耦合和难以测试。

松耦合的出发点:在目标类外面创建接口的实现类对象,以接口作为构造函数的参数传给目标类进行注入比直接在目标类中用构造函数new进行注入更加松耦合。(本质上当然都是在目标类的构造函数中进行注入的)

那么接下来如何将接口的某个具体实现类传给目标类的构造函数呢?或者说如何装配?

扫描二维码关注公众号,回复: 4854434 查看本文章

spring通过应用上下文装载bean的定义并把他们装配起来。spring自带了多种应用上下文的实现,它们的区别仅仅是如何加载配置文件。有了上下文对象,我们就能向容器注册需要spring管理的对象了(不管是基于注解注册还是基于XML注册)。

对于上下文抽象接口,Spring也为我们提供了多种类型的容器实现,供我们在不同的应用场景选择——

  1. AnnotationConfigApplicationContext:从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式;
  2.  ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式;
  3.  FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件;
  4.  AnnotationConfigWebApplicationContext:专门为web应用准备的,适用于注解方式;
  5.  XmlWebApplicationContext:从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式。

有了以上理解,问题就很好办了。你只要将你需要IOC容器替你管理的对象基于xml也罢,java注解也好,总之你要将需要管理的对象(Spring中我们都称之问bean)、bean之间的协作关系配置好,然后利用应用上下文对象加载进我们的Spring容器,容器就能为你的程序提供你想要的对象管理服务了。

现在一般都不在代码中用new创建上下文:通常为在web.xml中配置

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

此时将默认加载/WEB-INF/下的applicationContext.xml装配信息,如果applicationContext.xml文件没有在/WEB-INF/下,或文件名不一致,或存在多个Spring配置文件,在web.xml文件中根据下面代码修改

单个装配信息:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:mobile-webapp-context.xml</param-value>
</context-param>

多个装配信息:

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath*:applicationContext-*.xml,/WEB-INF/applicationContext.xml,/WEB-INF/classes/applicationContext-*.xml
</param-value>
</context-param>

应用上下文可以简单的理解成Spring容器的一种实现,即用于操作容器的容器类对象(或者说是spring容器的接口,就像socket与网络连接的关系一样)。通过上下文可以将需要Spring帮你管理的对象放入容器中,使用时调用上下文的方法取得容器里的Bean。https://www.i3geek.com/archives/1934

DI能够让相互协作的软件组件保持松散耦合,而面向切面编程AOP允许你把遍布应用各处的功能分离出来形成可重用的组件。

猜你喜欢

转载自blog.csdn.net/u010287873/article/details/85623423