[Spring] 初识spring
来源:互联网 发布:家装网络布线图 编辑:程序博客网 时间:2024/06/05 08:41
Spring
介绍
Spring框架是一个基于Java开源的企业应用开发框架Spring模块都打包成JAR文件,其命名格式如下:spring-moduleName-x.y.z.RELEASE.jar moduleName是模块名字,x.y.z是Spring版本号;spring-beans-4.1.12.RELEASE.jarSpring官网:http://projects.spring.io/spring-framework
依赖注入
△依赖注入和控制反转不同:http://martinfowler.com/articles/injection.html
依赖注入:你要用我的东西,我创建好了给你
1. 通过特定的set方法
public class A{ private B b; //A中要有B的实例 public void importantMethod() { b.usefulMethod(); //A中要用到B的方法 } public void setB(B b) { //提供B方法的人 自动调用set方法把B给你 this.b = b; }}
2. 通过构造器的方式注入
public class A{ private B b; ... public A(B b){ //Spring先创建B的实例,再创建实例A,然后把B注入到实例A中 this.b = b; }}
实现
Spring中,程序几乎将所有重要对象的创建工作移交给Spring,并配置如何注入依赖;
Spring支持XML和注解两种配置方式;
需要创建一个ApplicationContext对象;代表一个Spring控制反转容器
org.springframework.context.ApplicationContext接口有多个实现:
①ClassPathXmlApplicationContext 尝试在类加载路径中加载配置文件
②FileSystemXmlApplicationContext 从文件系统中加载
//从类路径中加载config1.xml和config2.xml的ApplicationContext创建的一个代码示例ApplicationContext context = new ClassPathXmlApllcationContext(new String[] {"config1.xml","config2.xml"});//可以调用ApplicationContext的getBean方法获得对象Product product = context.getBean("product",Product.class);//getBean方法查询id为product且类型为Product的bean对象
XML配置文件
<?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"> <import resource="config1.xml"/> //导入其他xml配置文件</beans>
Spring控制反转容器的使用
通过构造器创建一个bean实例
//配置文件中<bean name="product" class="app15a.bean.Product"/>//Java代码中//该bean的定义告诉Spring通过默认无参的构造器来初始化Product类ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring-config.xml"});Product product1 = context.getBean("product",Product.class);product1.setName("Excellent snake oil");System.out.pringln("product1:"+product1.getName() );
通过工厂方式创建一个bean实例
//配置文件中<bean id="calendar" class="java.util.Calendar"factory-method="getInstance" />//Java程序中ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"spring-config.xml"});Calendar calendar = context.getBean("calendar",Calendar.class);
Destroy Method的使用
在类被销毁前能执行一些方法,Spring可以在bean定义中配置destroy-method属性<bean id="executorService" class="java.util.cncurrent.Executors"factory-method="newCachedThreadPool"destroy-method="shutdown"/>//通过java.util.concurrent.Executors静态方法newCachedThreadPool来创建一个java.util.concurrent.ExecutorService实例,在Spring销毁ExecutorSerrvice实例前调用其shutdown方法
向构造器传递参数
Spring支持通过带参数的构造器来初始化类通过参数名传递参数
<bean name="featuredProduct" class="app15a.bean.Product"> <constructor-arg name="name" value="Ultimate Olive Oil" /> <constructor-arg name="price" value="9.95"/></bean>
这样,在创建Product实例时,Spring会调用参数相同的构造器
通过指数方式传递参数
<bean name="featuredProduct2" class="app15a.bean.Product"> <constructor-arg index="0" value="Ultimate Olive Oil"/> <constructor-arg index="1" value="9.95"/></bean>
注意:采用这种方式,对应构造器的所有参数必须传递,缺一不可
setter、构造器方式依赖注入
<bean name="employee2" class="app15a.bean.Employee"> <constructor-org name="firstName" value="Senior"/> <constructor-org name="homeAddress" ref="simpleAddress"/> //Address类的变量</bean><bean name="simpleAddress" class="app15a.bean.Address"> ...//传参给变量</bean>
阅读全文
0 0
- 初识spring
- 初识Spring
- 初识Spring
- Spring初识
- Spring 初识
- 初识Spring
- 初识spring
- 初识Spring
- 初识Spring
- Spring初识
- 初识Spring
- 初识Spring
- 初识Spring
- Spring初识
- 初识Spring
- 初识Spring
- 初识Spring
- 初识Spring
- selenium2+python3自动化1-加载FireFox配置
- 【树形dp+并查集】Anniversary party POJ
- UE4学习1
- .net core 控制台输出乱码问题
- MyBatis概述
- [Spring] 初识spring
- Python3.X中的循环
- group_concat()函数总结
- 全向轮移动平台运动模型
- 机器学习-->sklearn数据预处理
- 常用数据格式转换函数
- lyric-parser解析歌词
- java集合总结
- 关于本地mysql客户端如何连接阿里云服务器上的MySQL数据库