Spring
-
接口:实现分工。降低耦合
-
耦合:一个类的属性是另一个类的对象。牵一发动全身。不利于扩展和维护。
-
Spring 分为两部分IOC、AOP
-
IOC
思想:控制反转
操作:依赖传递 -
控制反转思路介绍
控制反转:我需要,但我不主动取要。谁符合我的标准谁来找我,通过IOC容器这个中介。
这是思维方式叫控制反转,这种做法叫(扫包加注解@Component)依赖注入
让cpu来找主板。需要媒介。
-
Spring配置过程:
web.xml监听器
配置文件:applicationContext 扫描带有包
给类加注解
取IOC中的值
例子:
一个主板 有多个cpu类型(i3 i5 i7)
1.创建cpu接口类 接口降低耦合
2. 还存在问题:要修改MyTest程序,用的人多很麻烦
解决:
工厂模式
用:直接从工厂获取组装好的执行。
修改:只修改工厂中的代码即可。
IOC
IOC也是工厂模式
将工厂中的内容放到配置文件中
IOC过程描述:
配置监听:启动时读配置文件
读到扫描包:扫描Test包,扫描其中的类
类上有Component注解:将类放入IOC容器
1. 配置文件applicationContext配置(1)
- 新建spring配置文件
sping配置文件与springmvc一样
spring配置文件默认命名:applicationContext
什么是正转和反转:
正转:
主板需要cpu,在主板中主动传入cpu的值。(开发中不这样用)
<bean id="cpu" class="com.springmvc.Test.I5"></bean>
<bean id="mainBoard" class="com.springmvc.Test.MainBoard">
<property name="cpu" ref="cpu"></property>
</bean>
取出:
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");//读spring配置文件 参数:哪个配置文件
//取出对象
MainBoard mainBoard = (MainBoard)context.getBean("mainBoard");//传入要读取的对象id
mainBoard.fun();
反转:
2. web.xml配置监听器(2)
不同的监听器监听不同的东西
3. IOC容器看作是一个容器
控制反转只能发生在IOC容器中,要把内容登记在其中
3.1 如何将类放入IOC容器(用扫描包)
-
配置bean结点。
-
扫描包(✓)
3.2 如何取到IOC中的东西(加Resource注解)
实现控制反转:
cpu需要赋值,从IOC容器中直接拿,加Resource注解(Cpu自己不赋值,IOC容器中有谁符合cpu 的实现自己来赋值)
3.3 加Controller注解放入IOC并取出使用的演示
- 加Controller注解的也会放入IOC容器
换i5时,把注解加到i5上即可
3.4 有多个注解的情况
- 情况1:i3 i5 i7全加了注解,不知道选哪个了。
解决:删掉多余注解(✓)、选择想要的:@Resource(name = “i3”)
3.5 有哪些注解能实现放入IOC容器
(多种注解一样的功能,只是方便给人看的)
@Component
@Repository //dao层可以用这个,但是dao层不需要注解
@Service //Service层
@Controller //Controller层用
@Configuration//配置
Grade放入IOC容器演示
service实现放入IOC容器
不赋值直接从IOC容器拿
扫包: