文章目录
Spring 的介绍:
一、对于 Spring 的认识,记住如下几点:
- Spring 是
开源
的轻量级框架
。说它开源,证明其免费,个人认为这也是 Spring 可以风靡的原因所在; - Spring 的
核心
有两部分,分别为:
(1)Aop:面向切面编程
;通俗的讲就是扩展功能不是通过修改源代码实现,而是通过修改相关配置文件完成;
(2)Ioc:控制反转
;通俗的讲比如有一个类,在类里面有个方法(这个方法不是 static 修饰的静态的方法),此时调用该类里面的方法。需要创建此类的对象,在使用对象调用方法,创建对象的过程,需要 new 出来 ,把创建对象的过程不是通过 new 方式实现,而是交给 Spring 配置创建对象,就叫做控制反转; - Spring 还是一个一站式框架 ;一站式的含义是说 Spring 在 JAVAEE 的三层结构中,对每一层都提供了不同的解决技术;对应关系如下: web 层:SpringMVC service 层:Spring 的 IOC dao 层:Spring 的 jdbcTemplate
二、Spring的官方网址
- spring官网首页:https://spring.io/
- spring-framework API 文档官方地址:
https://docs.spring.io/spring/docs/current/spring-framework-reference/ - spring版本下载地址:https://repo.spring.io/release/org/springframework/spring/
- spring版本lib下载地址:
https://repo.spring.io/libs-release-local/org/springframework/spring/ - Apache Commons Logging组件下载地址:
http://commons.apache.org/proper/commons-logging/download_logging.cgi
三、Spring的特点
- 提供了展现层 SpringMVC
- 持久层 Spring JDBC
- 还能整合开源世界众多著名的第三方框架和类库
- 业务层事务管理 AOP
- 方便解耦,简化开发 IOC
- Java源码是经典学习范例
逐渐成为使用最多的 Java EE 企业应用开源框架
四、Spring的架构
- (1)
Test
:用于测试使用 - (2)
Core container:核心容器
,就是用于装Java Bean对象 - (3)
AOP:切面编程
- (4)
Aspects
:提供了与AspectJ的集成 - (5)Data access:数据访问。用于访问操作我们的数据库。支持持久层的操作。jdbcTemplate mybatis
- (6)
Web
:用于支持数据展示层,支持http请求 - (7)
Transactions
:用于支持事物处理。用于解决业务层的事物处理问题。 编程式事务管理和声明式事务管理.
五、Spring的生命周期
- (1)生命周期
创建方法init
销毁方法destory
普通方法service - (2)属性
init-method 当该对象初始化的时候该方法会自动执行
destroy-method 当该对象即将销毁的时候会自动调用该方法 - (3)测试
context.close()关闭容器
public class Person{
public void init(){
System.out.println("哇哇...");
}
public void eat(){
System.out.println("吃食堂...");
}
public void destory(){
System.out.println("呜呜...");
}
}
<bean id="person6" class="com.wzx.domain.Person"
init-method="init"
destroy-method="destory"
/>
<br>
六、Spring依赖注入-DI-set方法
- (1)什么是依赖注入
DI (dependency injection) 依赖注入
含义:就是给对象的属性设置值.
就是给对象的属性设置值
set方法给对象设置值
构造方法给对象初始化的时候设置值. - (2)property标签
set方式设置属性(掌握)
让spring调set方法,前提条件类中必须有set方法
name : 代表的是set方法去掉set,首字母小写setName Name name
value: 基本类型或字符串类型的值,具体给属性设置用的
ref (引用) : 引用对象的id,作为一个对象类型注入
七、Spring依赖注入-给复杂类型注入
- (1)什么是复杂类型?
简单的是基本类型与字符串
Aarry 数组 List 集合 Map集合 Set集合 Properties集合 - (2)如何给这些属性设置值
使用对应的子标签
array,list,map,set,props
//集合类型属于复杂类型
private String[] arr; //女朋友们
public void setArr(String[] arr) {
this.arr = arr;
}
public String[] getArr() {
return arr;
}
//List
private List<String> list;//前女朋友们
public void setList(List<String> list) {
this.list = list;
}
//set
private Set<String> set;//前女朋友们
public void setSet(Set<String> set) {
this.set = set;
}
//map
private Map<String,String> map;//前女朋友们
public void setMap(Map<String, String> map) {
this.map = map;
}
//properties
private Properties properties;//前女朋友们
public void setProperties(Properties properties) {
this.properties = properties;
}
<bean id="person7"
class="com.wzx.domain.Person">
<property name="name" value="jack"/>
<property name="arr">
<array>
<value >rose</value>
<value >rose</value>
<value >rose</value>
</array>
</property>
<property name="list">
<list>
<value >rose1</value>
<value >rose2</value>
<value >rose3</value>
</list>
</property>
<property name="set">
<set>
<value >rose</value>
<value >rose</value>
<value >rose3</value>
</set>
</property>
<property name="map">
<map>
<entry key="10010" value="rose1"/>
<entry key="10086" value="rose2"/>
<entry key="110" value="rose3"/>
</map>
</property>
<property name="properties">
<props>
<prop key="10010">rose1</prop>
<prop key="10086">rose2</prop>
<prop key="110">rose3</prop>
</props>
</property>
</bean>