Spring框架的ioc

Spring框架
-----------------------------------------------
要了解最新的Spring要进入官网
Spring Cloud Spring云端
Spring是什么?
1、Spring是一个开源框架,他的创建是为了解决企业级应用开发的复杂性
2、Spring使用普通的javabean技术就能实现以前只能使用ejb技术实现的事情
3、然而,Spring的用途不仅限于服务器的开发
4、就简单性、可测试性、松散耦合性来说,任何java应用都能从Spring获益
5、Spring做了许多事情,但是分解成基本部分,Spring是一个轻量级的依赖注入
---和面向切面的容器框架


---------------------------------------------------------
·轻量级框架
--发布仅一个jar包
--额外消耗可以忽略不计
--非侵入性
·容器
--管理对象的生命周期
--控制对象的创建方式
·ioc
--控制倒转/依赖注入
--配置及管理对象的依赖关系
·aop
--面向切面编程
--oop及ioc的补充
·通用解决方法及最佳实践
--当前流行开源产品的封装
-------------------------------------------------------------
首先建立一个Maven项目
ioc容器
首先要下载类库要
在maven官网下载jdom
复制编码到pom.xml代码如下但是要放到<dependencies></dependencies>里面
---------
<!-- https://mvnrepository.com/artifact/jdom/jdom -->
<dependency>
    <groupId>jdom</groupId>
    <artifactId>jdom</artifactId>
    <version>1.0</version>
</dependency>
----------
建立beans.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!-- class里面是Dao层的实现类的全路径及Service层的类 -->
<bean name="u" class="com.neusoft.daoimpl.UserDaoImpl"></bean>
<!-- name="userService"表示service里面的类 -->
<!-- class="com.neusoft.cervice.Userservice"表示service的全路径 -->
<bean name="userService" class="com.neusoft.cervice.Userservice">
<!-- name="userDao"初始化userDao接口  bean="u"指向name="u"的bean-->
   <property name="userDao" ref="u"/>


</bean>
</beans>
--------------------------
ioc的原理,创建工厂类和接口对上面的xml文件进行管理


public class BeanFactoryImpl  implements BeanFactory{
      private Map<String, Object> beans = new HashMap<String, Object>();
      public BeanFactoryImpl() throws Exception, IOException{
      //创建一个解析器
      SAXBuilder saxbuilder = new SAXBuilder();
      //构件并加载Beans.xml文件
    Document document =  saxbuilder.build(this.getClass().getClassLoader().getResourceAsStream("beans.xml"));
        //获取根元素
    Element root =  document.getRootElement();
    //获取子节点
    List list = root.getChildren("bean");
    for(int i = 0; i<list.size();i++){
    Element element = (Element) list.get(i);//拿到bean元素
    String name = element.getAttributeValue("name");
    String clazz = element.getAttributeValue("class");
    System.out.println(name+"  "+clazz);
    //要将clazz转成Object对象,然后将对象保存到Map当中
    //通过java中的反射创建对象
    Object object = Class.forName(clazz).newInstance();
    beans.put(name, object);
    for (Element element2 : (List<Element>)element.getChildren("property")) {
String name2 = element2.getAttributeValue("name");
String bean = element2.getAttributeValue("ref");//u
//从Map当中获取到u所对应的实现
Object beanobject = beans.get(bean);//com.neusoft.daoimpl.UserDaoImpl
//模拟的构造set方法:setUserDao(UserDao userDao)
String methodName = "set"+name2.substring(0,1).toUpperCase()+name2.substring(1);
System.out.println(methodName);

}
    }
    System.out.println(beans);
      }
@Override
public Object getBean(String id) {
// TODO Auto-generated method stub

return null;
}
public static void main(String[] args) {
try {
new BeanFactoryImpl();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}







































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值