Spring入门
目录
- Spring简介
- Bean的自动配置
Spring简介
Spring是为了解决企业应用开发的复杂度,是一个轻量级的控制反转(将对象的创建权反转给Spring)和面向切面的容器
- 从大小与开销两方面而言Spring都是轻量的,完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。
- 通过控制反转(IOC)的技术达到松耦合的目的
- 提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
- 包含并并管理应用对象的配置和声明周期,这个意义上是一种容器
- 将简单的组件配置,组合成复杂的应用,这个意义上是一种框架
IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护
DI:依赖注入,是其一种实现方式
目的:创建对象并且组装对象之间的关系
特点
- 容器
Spring是一个轻量级容易,可以管理对象的生命周期、对象与对象之间的依赖关系。可以通过配置文件来定义对象,以及设置其他对象的依赖关系
- IOC
控制反转(Inversion of control),即创建被调用的实例不是由调用者完成,而是由Sprig容器完成,并注入调用者
- AOP
面向切面编程,是一种编程思想,通过分离应用的业务逻辑与系统服务(日志和事务管理)进行开发。应用对象只需要完成业务逻辑,并不负责系统级的关注点。可以把日志、安全、事务管理等服务理解成一个“切面”,把很多被业务逻辑反复使用的服务完全剥离出来,以达到复用。然后将“切面”动态的“织入”到业务逻辑中,让其享受此“切面”的服务
- 非侵入编程
Spring框架的API不会出现在业务逻辑上,即业务逻辑是POJO。由于业务逻辑中没有Spring的API,所以业务逻辑可以从Spring移植到其他框架上,基于Spring开发的应用对象不依赖于Spring的API
优点
- 方便解耦,简化开发
Spring就是一个容器,管理着所有对象的创建和依赖关系维护
- AOP面向切面编程
Spring提供面向切面编程,可以实现对程序的权限拦截、运行监控等功能
- 声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程
- 方便集成各种优秀的框架
Spring其内部提供了对各种优秀框架的支持(Struts、Hiberbate、Mybatis、Quartz等)
- 降低Java EE开发中难用的API
- Spring对Java EE开发中难用的API(JDBC、JavaMall、远程调用等),都提供了封装,降低了操作难度
作用
- 容器
- 提供了对多种技术的支持
- JMS、MQ支持、UnitTest
- AOP(事务管理、日志)
- 提供了众多方便应用的辅助类(JDBC Template等)
- 对主流应用框架提供了良好的支持
Spring注入
Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量赋值行为
常用的两种注入方式:
- 属性注入
- 构造注入
属性注入
- 属性注入即通过setter方法注入Bean的属性值或依赖的对象
- 属性注入使<property>元素,使用name属性指定Bean的属性名称,value属性或<value>子节点指定属性值
- 属性注入是实际应用中最常用的注入方式
<!-- 通过全类名的方式配置bean--> <bean id="helloWorld" class="com.atguigu.spring.beans.HelloWorld"> <property name="name" value="Spring"></property> </bean>
构造方法注入
- 通过构造方法注入Bean的属性值或依赖对象,它保证了Bean实例在实例化后就可以使用。
- 构造器注入在<constructor-arg>元素里声明属性,<constructor-arg>中没有name属性
<!-- 通过构造方法来配置bean的属性 --> <bean id="car" class="com.atguigu.spring.beans.Car"> <constructor-arg value="ordi" index="0"></constructor-arg> <constructor-arg value="3000" index="1"></constructor-arg> </bean>
应用
搭建Spring开发环境:
把以下jar包加入到工程的classPath下:
commons-logging-.jar
spring-beans.jar
spring-aop.jar
spring-core.jar
spring-expression.jar
Spring的配置文件:一个典型的Spring项目需要创建一个或多个Bean配置文件,这些配置文件用于Spring IOC容器里配置Bean。Bean的配置文件可以方法在classpath下,也可以放在其他目录下。
HelloWord类
public class HelloWorld { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void hello() { System.out.println("hello:"+name); } }
由调用者本身创建
public class Main { public static void main(String[] args) { HelloWorld helloWorld=new HelloWorld(); helloWorld.setName("atguigu"); 此时这两步交给Spring管理 //调用hello方法 helloWorld.hello(); }
-->hello:atguigu
将对象的创建和属性的赋值交给Spring来管理
- 在src路径下创建名为applicationContext.xml的Spring Bean Configration File
- 在XML文件中配置Bean
<!-- 配置bean--> <bean id="helloWorld" class="com.atguigu.spring.beans.HelloWorld"> <property name="name" value="Spring"></property> </bean> 用反射的方式,用id标识这个对象 将name值赋为Spring,
- 调用方式
当ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml")时,IOC容器它会自动初始化类的构造方法和对属性进行赋值
//1、创建Spring的IOC容器对象 ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); //2、从IOC容器中获取Bean示例 HelloWorld helloWorld=(HelloWorld)ctx.getBean("helloWorld"); //调用hello方法 helloWorld.hello();
本文转发整合:

浙公网安备 33010602011771号