1.Spring简介
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的javaBean来完成以前只可能有EJB完成的事情。然而,Spring的用途不仅仅是限于服务器端的开发。从简单、可测性和松耦合性角度而言,绝大部分java应用都可以从Spring中受益。
Spring是轻量级开源的JavaEE框架,Spring可以解决企业应用开发的复杂性。
2.Spring的核心组成部分IOC 和 AoP
(1)IOC:控制反转,不创建对象的过程交给Spring容器管理
(2)AoP: 面向切面,不修改源代码进行功能增强。
3.Spring特点
(1) 方便解耦,简化开发
(2) AoP编程支持
(3) 方便程序测试
(4) 方便进行事务操作
(5)降低API开发难度
4.下面以各种Spring的例子来演示Spring的用法
a.创建普通java项目,导入Jar包
b.在src目录下面创建如下xml配置文件(Spring Config)
c。创建相应的对象类
public class User {
public void add(){
System.out.println("..............add");
}
}
d.在上述配置文件中声明对象的创建
<!--配置User对象创建--> <bean id="user" class="com.atguigu.spring5.User"></bean>
e.创建测试类进行测试
public class TestSpring5 {
@Test
public void testAdd(){
//1.加载spring配置文件
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
//2.获取配置创建的对象
User user = context.getBean("user", User.class);
//3.调用方法
user.add();
}
}
5.关于IOC的介绍,我在另一篇博客中有所涉及,可以去查看一下
6.IOC操作Bean管理
a.什么是Bean管理
Bean管理是指Spring创建对象,Spring注入属性两个操作
b.Bean管理的操作方式
Bean管理有两种操作方式,一种是机遇xml文件实现方式,另一种是基于注解是实现方式
7.IOC操作Bean管理(基于xml方式)
a.基于xml方式创建对象
上面举出的例子就是基于xml方式创建对象,值得注意的是,创建对象时,默认的也是执行无参数的构造方法创建对象。
b.基于xml方式注入属性
(1)使用set方式进行属性注入
首先创建一个Book类,注意这个类中需要有set方法,要不然一会配置文件中会报错
public class Book { //创建属性 private String bname; private String bauthor; private String address; //创建属性对应的set方法 public void setBname(String bname){ this.bname = bname; } public void setBauthor(String bauthor) { this.bauthor = bauthor; } public void setAddress(String address) { this.address = address; } public void testDemo(){ System.out.println(bname+"::"+bauthor+"::"+address); } }
在相应的xml文件中配置相关属性
<!--set方法注入属性--> <bean id="book" class="com.atguigu.spring5.Book"> <!--使用property完成属性注入 name:类里面的属性名称 value: 向属性注入的值--> <property name="bname" value="易筋经"></property> <property name="bauthor" value="达摩老祖"></property> <!--特殊字符串 1.转义 2.把带特殊字符串的内容写道CDATA--> <property name="address"> <value><![CDATA[<<南京>>]]></value> </property> </bean>
set方法还有另外一种比较简写参数配置方式,就是p标签,感觉就类似于将<property>属性变成了标签,具体配置文件如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--使用p标签,需要在xml文件顶部添加相关配置--> <bean id="book1" class="com.atguigu.spring5.Book" p:bname="九阳神功" p:bauthor="无名氏"></bean>
调用对应的测试类
public class TestSpring5 { @Test public void testAdd(){ //1.加载spring配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); //2.获取配置创建的对象 Book book = context.getBean("book", Book.class); //3.调用方法 book.testDemo(); }
(2)使用有参数构造进行注入
在使用有参数构造方法进行方法注入式,在相应类中必须有有参构造方法,其余除了bean文件之外,其它东西与使用set方法进行属性注入相同
<!--有参函数构造注入属性--> <bean id="orders" class="com.atguigu.spring5.Orders"> <constructor-arg name="oname" value="电脑"></constructor-arg> <constructor-arg name="address" value="China"></constructor-arg> </bean>