SSM框架学习-Spring篇 IOC/DI技术学习笔记——<bean>标签的使用。

SSM框架学习-Spring篇 IOC/DI技术学习笔记——<bean>标签的使用。

 

Spring开始学习的第一章节,首先学习的是IOC(控制反转)#也依赖注入的技术。这是一种面向对象的编程理念。用于降低代码之间的耦合度。

想要使用Spring。首先要在Maven的Pom文件里面导入依赖。

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>

Spring有四大核心组件,这里导入了三个#由于各个依赖之间有连带关系(可能不用导入三个,导入一个就行)。

然后在main的对应的package下面(和java同级),写一个resource文件,这里存放着spring的配置文件。

 new一个叫做applicationContext的spring配置文件

这样,基本的框架就搭建好了,接下去我们要利用这配置文件来实现定义一个bean的实例。

首先Bean是什么东西?他和Pojo和entity有什么区别?

引用:https://www.cnblogs.com/LiuChunfu/p/5574565.html

——只要是Java的类的就可以称为一个Bean,在Spring上里面,被Spring管理的对象就可以将其称作为Bean。它不仅仅可以包括对象的属性以及get,set方法,还可以有具体的业务逻辑。

可是,只是实体类而已,有什么好管理的呢?用传统的 Obj obj  = new Obj()的方法来创建不好么?

先使用一个小例子来体现区别:

创建Girl的实体类:

在applicationContext.xml里面写bean标签:

<bean class ="cn.sdibt.edu.iMaker.pojo.Girl" id="girl"> </bean>

class指定实例的属性,在pojo文件夹下面的Girl.class,id是作为起一个别名作为唯一标识,在java代码中被引用。

在java代码中,写一个test方法。

这样就可以生成girl对象,然后执行里面的方法。

ApplicationContext是一个接口,负责读取spring配置文件,用于管理对象的加载生成维护Bean之间的关系(继承?实现?),以及Bean的生命周期。ClassPathXmlApplicationContext("applicationContext.xml")是ApplicationContext的实现类,用于从classpath里面读取配置文件。

这样,一个叫做ctx的上下文对象Context就被创建了出来,对这个对象使用getBean(实体类的id)就可以获取一个对象

在这里需要强制转型为想要的Girl,这样就通过spring的配置文件生成了一个对象。

虽然步骤很麻烦,但是对于企业级开发,实体类数目庞大的时候,这种做法是很便于管理的

那么怎么会便于管理呢?下面是例子,关于怎么使用spring处理bean之间的关系(实现)

我们可以创建一个接口叫做Pay,来模拟支付方式之间的转换。

里面有个抽象方法需要实现类来重载。

创建微信支付类支付宝支付类

 

这些实现类里面都重载了Pay的方法。

按照传统的写法,程序员在java代码里面想要实现支付方式的切换,需要这样。

if(微信支付)

Pay pay = new WXPay();

else

Pay pay = new ALiPay()

这样几行的代码。来处理这种实现的关系,那么在spring里面我们只要修改xml文件里面关于叫做pay的class属性即可

在java代码里面:

这里的代码在切换两种支付方式的时候是不变的,因为在 applicationContext.xml 里面我们修改了getBean("pay")的pay对应的实体类。这样就避免了在java代码层的出错

同样的,关于处理继承的关系,我们也可以类似的操作来实现只改变xml文件,不动java代码层。

新建prettyGirl实体类,继承自上面的Girl

 我们只需要修改xml文件中对应girl的id的class属性即可,把它从girl换成PrettyGirl:

 在java代码中,我们就可以几乎只用几行代码来获取这个对象,不用改动,想要调用方法就调用即可。

 我们只需要获取getBean即可。

总结:

    Bean可以用来指向(class)一个实体类,利用spring在java层的生成对象的时候,就可以通过修改xml文件来处理实体类和实体类之间的各种关系。

猜你喜欢

转载自blog.csdn.net/Xenoverse/article/details/83269617