Spring(2)ioc操作

来源:互联网 发布:阿里云配置tomcat教程 编辑:程序博客网 时间:2024/06/16 19:32

1、ioc操作分为两个部分

(1)ioc的配置文件方式

(2)Ioc的注解方式

2、ioc的底层原理

(1)xml配置文件

(2)Dom4j解决xml

(3)工厂设计模式

(4)反射

3、实现原理

原来的方式耦合度太高了

比如说

Publi class User{                              

Public void add(){

...

}}

那么如果想要调用方法就需要

User user=new User();

User.add();

后来就采取使用工厂模式解耦合操作

Public class UserService{

Public void add(){}}

Public class UserServlet{

//调用

UserService s=Factory.getService();

s.add();

}

如果想要在UserServlet中调用UserService中的add方法就需要创建工厂类

//建一个工厂类

Public class Factory{

//提供一个返回UserService对象的方法

Public static UserService getService(){

Return new UserService();}}

//静态方法返回service对象

但是这个方法还是不太好

因为servlet和工厂还有耦合度

我们想要的是高内聚低耦合:就是一个类中紧密相连,不同的类中关联度低是

ioc中是这么做的(ioc中怎么实现)

把我们的对象创建不是new出来的是配置文件配出来的

首先由两个类

Public class Service{}

Public class Servlet{}

servlet要得到service的对象

第一步创建一个配置文件(xml)在配置文件中配置对象类

<bean id=”Servlce” class=”要创建对象的类的全路径”/>

第二步创建一个工厂类使用dom4j解析文件+反射

Public class Factory{

//提供返回对象的方法

Public static Service getService(){

//1使用dom4j解析(对文件内容进行操作)xml文件

//根据配置文件的id值得到id值对应的class属性得值

String classValue=”class属性值”;

//2使用反射创建类的对象

Class clazz=Class.forName(classValue);

//创建类的对象

Service service=Class.newInstance();

Return service;

}}

4、ioc实例

1、导入jar

Jar包的特点是每个功能三个jar

(1)源代码(2)文档(3)基本

string最基本功能时只需要core container中的:

Beans Core Context SpEL

还需要导入支持日志输出的jar

Commons-logging-1.2.jar还有一个叫log4j-1.0.16.jar

2、创建一个类在类里面创建方法

3、创建一个spring的配置文件配置创建的类

(1)Spring的核心配置文件名称和位置不是固定的

一般放在src下面,建议applicationContext.xml

(2) 引入schema约束

找到docs目录下的spring-framework-reference下的html

<?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/spring-beans.xsd  ">

       </beans>

 (3) 配置对象的创建

      <!-- ioc入门 -->

       <bean id="user" class="cn.itcast.ioc.User"></bean>

所以配置文件里面是

<?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/spring-beans.xsd  "

       >

       

       <!-- ioc入门 -->

       <bean id="user" class="cn.itcast.ioc.User"></bean>

</beans>

4、测试对象创建

package cn.itcast.ioc;

 import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestIOC {

@Test

public void testUser() {

//1加载spring配置文件,根据创建对象

ApplicationContext context=

new ClassPathXmlApplicationContext("applicationControl.xml");

//因为文件在src下所以直接可以写文件名

//根据配置文件的配置把对象创建

//2得到配置创建的对象

//context.Bean("id值");

User user=(User) context.getBean("user");//得到就是对象

System.out.println(user);//如果user对象能创建得到的是地址

user.add();

}

}


原创粉丝点击