spring概括理论疏导,你值得学会
作者:互联网
概括:很多人数Spring : (春天 )给软件行业带来了春天2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。
Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的框架技术
一,spring的初衷
1、JAVA EE开发应该更加简单。
2、使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。
3、为JavaBean提供了一个更好的应用配置框架。
4、更多地强调面向对象的设计,而不是现行的技术如JAVA EE。
5、尽量减少不必要的异常捕捉。
6、使应用程序更加容易测试。
二,spring的目标
1、可以令人方便愉快的使用Spring。
2、应用程序代码并不依赖于Spring APIs。
3、Spring不和现有的解决方案竞争,而是致力于将它们融合在一起。
Spring的基本组成:
1、最完善的轻量级核心框架。
2、通用的事务管理抽象层。
3、JDBC抽象层。
4、集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps。
5、AOP功能。
6、灵活的MVC Web应用框架。
三,spring的优点
1)方便解耦,简化开发 通过 Spring 提供的 IoC容器,可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度耦合。 用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
2)AOP 编程的支持 通过 Spring的 AOP 功能,方便进行面向切面编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松实现。
3)声明式事务的支持 可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量。
4)方便程序的测试 可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。
5)方便集成各种优秀框架 Spring对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的支持。
6)降低 JavaEE API 的使用难度 Spring对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些 API 的使用难度大为降低。
7)Java 源码是经典学习范例 Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java 设计模式灵活运用以及对 Java技术的高深 造诣。它的源代码无意是 Java 技术的最佳实践的范例。
四,spring的使用
1,添加相应的依赖
<!--引入依赖:-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
</dependencies>
2,创建spring配置文件。----spring的容器。
<?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:表示该类交于spring容器来管理。
id:唯一表示。方便别人通过该id的值找到对应的对象。
class:表示全类名
-->
<bean id="hello01" class="com.ykq.HelloWorld"></bean>
</beans>
3,测试
public static void main(String[] args) {
//1.读取spring的配置文件。
ApplicationContext app=new ClassPathXmlApplicationContext("spring01.xml");
//2.从容器中获取指定的对象。
HelloWorld hello01 = (HelloWorld) app.getBean("hello01");
//3.通过对象调用类中相应的成员
hello01.show();
hello01.print();
}
五,依赖的注入
-
依赖注入(Dependency Injection,DI)。
-
依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 .
-
注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 .
六,注入的方式
1,通过set方法注入
<bean id="userService" class="com.ykq.service.UserService">
<!--property:为类中属性赋值通过set方法赋值。name:表示属性名.
ref:值的引用
-->
<property name="userDao" ref="mysql"/>
</bean>
2,.通过构造方法
<bean id="userService" class="com.ykq.service.UserService">
<!--通过构造方法为类中属性注入:参数的下标-->
<!-- <constructor-arg index="0" ref="oracle"/>-->
<!--通过构造方法为类中属性注入:参数名称-->
<!-- <constructor-arg name="userDao" ref="mysql"/>-->
<constructor-arg type="com.ykq.dao.UserDao" ref="mysql"/>
</bean>
3,注入的数据类型
(1)基本数据类型或者字符串。
(2)引用类型--对象类型。
(3)集合List,Set。
(4)map集合。
(5)数组
<?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="clazz01" class="com.ykq.di.Clazz">
<!--如果是基本类型和字符串类型注入值时 使用value-->
<property name="cid" value="145"/>
<property name="cname" value="QY145"/>
</bean>
<bean id="stu" class="com.ykq.di.Student">
<property name="name" value="youname"/>
<property name="age" value="25"/>
<!--如果属性类型为对象类型。ref-->
<property name="clazz" ref="clazz01"/>
<!--属性类型为list类型 <list></list>-->
<property name="list">
<list>
<value>name</value>
</list>
</property>
<property name="set">
<set>
<value>name</value>
</set>
</property>
<!--map属性类型-->
<property name="map">
<map>
<entry key="name" value="name"/>
<entry key="age" value="age"/>
<entry key="sex" value="sex"/>
</map>
</property>
<property name="arr">
<array>
<value>110</value>
<value>120</value>
<value>130</value>
<value>119</value>
</array>
</property>
</bean>
</beans>
标签:容器,依赖,框架,概括,spring,AOP,疏导,Spring 来源: https://blog.csdn.net/mociaochen/article/details/121801152