通俗的说一下Spring
通俗的说一下Spring
Spring它是一个开源的框架,我们通常认为Spring框架它是一个大管家,没错它就是一个大管家,所以说我们在开发当中Spring框架是不可缺少的,它是JavaEE/SE的一站式框架(轻量级的),那什么是轻量级呢?我们在开发中会把服务器端分为三层架构:web层、业务逻辑层、持久层。
我们来说一下这三层架构:web层也就是spring为我们提供了springMVC这一框架,(后续我们会详细介绍springMVC的);业务逻辑层也就是我们所说的service层,spring提供了Bean管理、IOC以及事务的管理;持久层:spring为我们提供了JDBC的模板(JdbcTemplate)他可以很好的与ORM框架进行整合,比如说:Hibernate,Mybatis,的持久层的框架;
我们来解说一下spring的有点:
①方便解耦,简化开发
spring就是一个大工厂,可以将所有的对象创建和依赖关系维护都交给spring进行管理
②支持AOP的开发
spring提供了面向切面编程,可以很方便的对程序进行拦截,运行监控的功能;
③声明式事务的支持
只需要配置就可以完成对事务的管理,而无序手动的编程
④方便对程序的测试
spring对Junit4支持,可以通过注解@Test测试spring的程序
⑤方便集成各种优秀的框架
spring不排斥各种优秀的框架,其中内部提供了对各种优秀框架的支持(Struts2、hibernate,Mybatis)的直接的支持
OK,以上就是我们所说的spring的优点
---------------------------------------------------------------------------------------------------------------------------------通常我们说到spring就会知道:spring的IOC和AOP还有DI
我们来说一下springIOC的底层的实现原理,IOC就是我们所说的(控制反转)那么什么是控制控制反转呢?简单的理解就是反射机制,在传统的方式开发的演变过程
起初我们采用的是UserService service = new UserService();面向对象的编程 -->我们会采用new一个对象的方式来对service层进行连接的。
其次我们采用的是UserService service = new UserServiceImpl();面向借口的编程 -->我们会采用new一个接口的方式来对service层进行连接的。我们在开发中都会采用OCP原则(open-close原则)既是对程序的扩展是open的,对修改程序代码是close的,尽量做到不修改程序的代码,实现对程序的扩展
然后我们采用了工厂设计模式-->用工程设计模式对spring的IOC进行了实现
-->//创建spring的工厂
ApplicationContext applicationContext = new ClassPathXMLApplicationContext(configLocation:"applicationContext.xml");
//获得工厂的类
UserService userService = (UserService) applicationContext.getBean("XXX")
XXX值得是Xml中配置的ID属性
目前大多数情况下都使用的是:工厂+反射+配置文件的方式进行IOC的实现
随着技术的发展spring提供了springboot让我们放弃了对配置文件的设置;减少了开发中对配置文件的设置
---------------------------------------------------------------------------------------------------------------------------
spring的Bean管理(Xml) Xml中的Bean
①采用无参构造:
②静态工厂实例化:
③实例工厂:
Bean标签中的配置
id和name ,一般情况下,装配一个bean时,通过指定的id属性作为bean的名称,id属性在IOC容器中必须是唯一的,如果bean的名称有特殊的符号,我们就需要使用name属性了
class用于设置一个类的全路径的名称,主要作用是IOC容器生成类的实例。