一.认识Spring
1.Spring的官网:Spring.io
IOC 控制反转
AOP 面向切面编程
OOP 面向对象编程 四大核心 继承 多态 封装 抽象
OOD 面向对象分析 工程师 架构师
OOA 面向对象分析
Spring致力于Java EE应用的各种解决方案,而不是仅仅专注于某一层的方案,Spring贯穿表现层,业务层,持久层
2.Spring之父简介
Rod Johnson,SpringFramework创始人, interface21 CEO
丰富的c/c++背景,丰富的金融行业背景
1996年开始关注Java服务器端技术
Servlet2.4和JDO2.0专家组成员
2002年著写《Expoert one-on-oneJ2EE设计与开发》,改变了Java世界
技术主张:技术以实用为本,音乐学博士
专家 (砖家)
教授 (叫兽)
攻城狮
3.Spring的运行时间
二.Spring IOC
1.理解控制反转
也被称为依赖注入,是面向对象编程中的一种设计理念,用来降低代码之间的耦合度
理解一:将组件对象的控制权从代码本身转移到外部容器
理解二:说的是创建对象实例的控制权从代码控制剥离到IOC容器(Spring容器)控制,实际就是在XML文件控制,侧重于原理
2.IOC原理
在业务代码中不使用new关键字来构建业务实例,而是在配置文件中通过XML节点来告知容器如何对内存中构建的对应类型的对象名称做属性名
三.DI的认知 什么是DI? Dependency Injection 依赖注入
说的是创建对象实例时,为这个对象注入属性值或其他对象实例,侧重于实现实现
也就是在xml节点中为实体类的对象赋值:
代码如下:
由于IOC可以不用使用new关键字来实例化对象,这里的id就是实例化对象名,class就是实例化的类,需要实例化的类
<bean id="service" class="happy.HappyService"> <property name="info" value="张三"></property> <property name="age" value="20"></property> </bean>
这里的name就是实体类中的属性名,value就是给其赋值
两者关系:IOC和DI它们是spring核心思想的不同方面(维度)的描述。 (重点)
四.如何在Idea中开发Spring项目
第一步:引入Spring所需要的依赖,也就是jar包
Spring-beans.4.2.0.jar附带了core核心和commons-loggingjar包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.0.RELEASE</version> </dependency> <!--aop使用的jar--> <dependency> <groupId> org.aspectj</groupId > <artifactId> aspectjweaver</artifactId > <version> 1.8.7</version > </dependency>
第二步:
创建实体类HappyService
第三步:
在resources目录下创建 applicationContext.xml文件,这里也叫大配置文件,核心文件
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"> </beans>
第四步:
创建测试类
第一个案例:控制台输出用户信息
具体实现代码如下:
1.实体类
public class HappyService { /* public HappyService(){ System.out.println("第一个Spring程序!"); }*/ public String info; public Integer age; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public void work(){ System.out.println("work"+info); } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
2.书写xml文件,加入<bean>节点
<bean id="service" class="happy.HappyService"> <property name="info" value="张三"></property> <property name="age" value="20"></property> </bean>
3.测试类
//第一个案例 @Test public void Test(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); HappyService service = (HappyService)context.getBean("service"); System.out.println("我叫"+service.getInfo()); System.out.println("今年"+service.getAge()); }
输出结果: