Spring -- 1.IOC,DI,XML
来源:互联网 发布:南昌淘宝摄影工作室 编辑:程序博客网 时间:2024/06/07 10:31
以下学习笔记:
IOC:
Inversion of Control
控制反转,就是对象本身不是自己去创建,而是由外部容器去创建和维护,我们去使用。
本质:获得依赖对象的过程被反转了。
DI:
Dependency Injection
依赖注入(实现IOC的方式)
方式:
1.XML
2.注解
把对象之间的依赖关系,通过依赖注入(赋值...)来完成
本质:IOC容器在运行期间,动态的将某种依赖关系注入到对象中。
IOC对象 = Bean
Bean的配置:XML <bean id = "aaa" class = " com.xx.xx.xx..">
过程:
1.Before:
(1)XML: 构造器传入springXmlPath,子类中 super("classpath*:spring-ioc.xml")
(2) context在before()中加载xml文件,创建上下文--context,也就是spring的容器
(3) 启动容器context
(4) 启动之后,会查找配置文件中配置的信息,(比如bean),并将信息解析,装载到spring的上下文context中
(5) 通过context.getBean() 获取相应的对象,子类中就是super.getBean("aaa"); ,返回他的对象
--------------------
Bean容器初始化
涉及的包:
生产Bean: org.springframework.beans -- BeanFactory提供配置结构和基本功能,加载并初始化Bean
保存Bean: org.springframework.context -- ApplicationConext八寸了Bean对象并在spring中被广泛应用
初始化ApplicationContext的几种方式
1.加载本地文件(磁盘目录)
2.Classpath(工程的相对路径)
3.web应用中依赖servlet或者listener来初始化
即:
1.FileSystemXmlApplicaionContext context = new FileSystemXmlApplicationContext("F:/workspace/appcontext.xml");
2.ClassPathXmlApplicationContext context = new ClassPathXmlApplicaionContext("classpath:spring-context.xml");
3.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
--------------------------------------------
Spring的注入
简单地说,就是启动spring容器,加载bean配置的时候,顺便完成了对变量的赋值行为
方式:
1.设值:自动调用类的set方法
2.构造
即:
1.
<?xml version ... encoding...>
<beans ...名称空间>
注意:name是你再service中写的aaaDao这个变量名,ref是下面Dao层的beand的id
<bean id="aaa" class="com.xxx.xxx.service.AaaServiceImpl">
<property name = "aaaDao" ref="aaaDao">
</bean>
<bean id="aaaDao" class="com.xxx.xxx.dao.AaaDaoImpl"></bean>
</beans>
2.
<?xml version ... encoding...>
<beans ...名称空间>
<bean id="aaa" class="com.xxx.xxx.service.AaaServiceImpl">
<constructor-arg name = "aaaDao" ref="aaaDaoId">
</bean>
<bean id="aaaDaoId" class="com.xxx.xxx.dao.AaaDaoImpl"></bean>
</beans>
-------------------------------------------------------------
Test
@RunWith(BlockJUnit4ClassRunner.class)
public class TestXxx extends UnitTestBase{
public Test(){
super("classpath:spring-injection.xml");
}
@Test
public void testSetter(){
XxxService service = super.getBean("aaaService");
}
}
业务逻辑
public interface xxxService
public class xxxServiceImpl implements xxxService{
private xxxDao xxxDao;
//方法一:设值注入
public void setXxxDao(XxxDao xxxDao){
this.xxxDao = xxxDao;
}
//方法二:构造器注入
public XxxServiceImpl(XxxDao xxxDao){
this.xxxDao = xxxDao;
}
}
数据库操作
public interface xxxDao
public class xxxDaoImpl implements xxxDao
--------------------------------------------------------------
- Spring -- 1.IOC,DI,XML
- Spring模拟(DI,IOC)
- Spring ioc Di概念
- spring IoC与DI
- Spring--IoC和DI
- spring IOC /DI 详解
- spring IOC ,DI原理
- Spring IOC(DI)模拟
- spring--IoC和DI
- Spring 的IoC DI
- Spring IOC/DI 配置
- spring IOC和DI
- 模拟Spring IOC DI
- Spring IoC与DI
- spring di ioc
- Spring IOC DI原理
- Spring IOC DI 简介
- Spring核心 IOC DI
- 自定义属性的实现
- 基础ANN相关论文研读
- discuz!帖中图片附件添加alt描述的快捷方法
- python3.5安装加密模块pycrypto
- 欢迎使用CSDN-markdown编辑器
- Spring -- 1.IOC,DI,XML
- 四 控制执行流程
- LeetCode 207. Course Schedule
- 第十七章 OAuth2集成——《跟我学Shiro》
- Nginx负载均衡配置说明
- 导致cannot resolve method setSupportActionBar()可能的两种错误
- Vaild PerfectSquare (注意数据溢出)
- 关于toolbar标题居中及隐藏右侧overflowButton
- javascript slice( ) 方法