Spring 简单特性
轻量级 零配置编程 API 使用简单
面向Bean 只需要编写非常普通的Bean
松耦合 充分利用了AOP 的思想
万能胶 与主流框架无缝集成
设计模式 将Java中经典的设计模式运用得淋漓尽致
Spring就是 简化开发
autowiring的实现过程:
a. 对Bean的属性迭代调用getBean方法,完成依赖Bean的初始化和依赖注入。
b. 将依赖Bean的属性引用设置到被依赖的Bean属性上。
c. 将依赖Bean的名称和被依赖Bean的名称存储在IoC容器的集合中。
Spring IoC容器的autowiring属性自动依赖注入是一个很方便的特性,可以简化开发时的配置,但是凡是都有两面性,自动属性依赖注入也有不足,首先,Bean的依赖关系在配置文件中无法很清楚地看出来,对于维护造成一定困难。其次,由于自动依赖注入是Spring容器自动执行的,容器是不会智能判断的,如果配置不当,将会带来无法预料的后果,所以自动依赖注入特性在使用时还是综合考虑。
IOC容器 存的是JAVA bean
2.IOC是什么?(面试题)
ioc(inverse of control )控制反转:所谓控制反转就是把对象(bean)对象和维护对象(bean)之间的关系的权利转移到Sqring容器中去了(ApplicationContext.xml)而程序本身不在维护了
3.DI是什么?(面试题)
di(dependency injection)依赖注入:实际上DI和IOC是同一个概念,因为在ApplicationContext.xml配置文件中bean和bean之间通过ref来维护的时候是相互依赖的,所以又叫做依赖注入。也就是控制反转。
AOP 核心思想 解耦 面向切面编程 不如说面向规则编程 关注点切面 也就关注点规则
列如 事物案例
开启一个事务
执行提交事务
事务回滚
关闭事务
这种有规律的东西 就可以认为它就是一个固定的规则 这时候 我们就单独把这个具有
一定规律的规则 单独分离出来 作为一个独立模块 这就一个切面 解耦
列如 小汽车
车架 来自车架生产加工 专业化 专人做专事
轮胎 轮胎生成产商
发动机 来自国外
组装规则在生产之前就订好规则了
AOP 就是来源于这种思想 面向切面就是面向规则编程 这个句话 解耦
列如 日志管理
Authentication 权限认证
Logging 日志
Transctions Manager 事务
Lazy Loading 懒加载
Context Process 上下文处理
Error Handler 错误跟踪 异常捕获机制
Cache 缓存
简单介绍一下spring,自己也重温一下
第一个小工厂先暂时不用maven,下一个会用maven来来配置
jar包只需要一个,spring版本为2.5(暂时为2.5,后续更新,基本核心都是一样的),引入spring.jar到lib,如下:
在src下新建applicationContext.xml文件,结果如下:
内容如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
在com.hemayun.createobject包下新建类HelloWorld.java :
package com.hemayun.createobject;
public class HelloWorld {
public HelloWorld() {
System.out.println("HelloWorld...");
}
/**
*
*/
public void hello() {
System.out.println("Hello world!");
}
}
测试:
package com.hemayun.createobject;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloWorldTest {
@Test
public void testHelloWorld() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld hello = (HelloWorld)context.getBean("helloWorld");
hello.hello();
}
}
这样运行junit,就成功了