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文件来处理实体类和实体类之间的各种关系。