笔记-----初识spring简单模拟spring

今天学习了spring的一些内容,刚开始学有点不是很清晰,发个笔记记录一下

spring解决了什么问题?

解决的是业务逻辑层和其他各层的松耦合问题

Spring模拟 使用反射创建对象
  1. 编写property文件---里面是类名的键值对

  1. 创建BeanFatory类,通过classloader 将源文件转化为inputStream流

  1. 通过property.load加载流,创建一个动态生成对象的方法,参数为配置源文件的key返回string字符串

  1. 通过反射newInstance()创建对应的对象 最后返回一个object对象

property文件

 userDao=com.gec.dao.UserDaoImpl
 userService=com.gec.service.UserServiceImpl

BeanFatory代码

 package com.gec.bean;
 ​
 ​
 // bean   -> spring 称呼   一个 bean 其实 就是javabean
 ​
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
 ​
 // 专门去造 对象的
 public class BeanFactory {
 ​
     private static  Properties properties =null;
     static {
 ​
    
 ​
         //1.  加载  applicationContext.properties
 ​
         // 反射方式加载
         ClassLoader classLoader = BeanFactory.class.getClassLoader();
 ​
         //2. 从配置文件 得到 inputstream 流
         InputStream inputStream = classLoader.getResourceAsStream("applicationContext.properties");
 ​
          properties = new Properties();
         try {
 ​
             //3.讲 inputstream 流 转为 properties 对象
             properties.load(inputStream);
         } catch (IOException e) {
             e.printStackTrace();
         }
 ​
     }
 ​
     // 创建对象
     public static Object createObj(String beanName){
 ​
         // com.gec.dao.UserDaoImpl
 ​
         //4. 根据 properties 对象 中 的key  获取到 值
         String str = properties.getProperty(beanName);
         Object obj = null;
         try {
             //5. 通过反射 去根据 类的全路径字符串 创建对象
              obj = Class.forName(str).newInstance();
 ​
         } catch (Exception e) {
             e.printStackTrace();
         }
         //6. 返回反射创建的对象
         return obj;
 ​
     }
 ​
 ​
 }

Spring基本配置

1.导入四个基本包+logging 准备bean对象

2.配置xml文件 -----配置bean类到容器

通过以下代码加载配置

测试代码:

 public class DemoTest1 {
 ​
     public static void main(String[] args) {
 ​
         //1. 加载  applicationContext.xml 得到 一个spring 容器
 ​
         ApplicationContext applicationContext =
         new ClassPathXmlApplicationContext("applicationContext.xml");
 ​
         //2.  从容器中要对象   根据名称
 ​
         User user = (User) applicationContext.getBean("user");
         System.out.println(user);
 ​
     }
 ​
 }

ok---

----------开始配置spring----------

1.导入需要的jar包

创建基础对象

结构如图:

2.编写spring 核心配置文件---applicationContext.xml 位置->放在src下

配置时设计到IOC概念---控制反转和DI依赖注入

IOC什么意思呢?就是说以前我们创建对象是自己亲力亲为,现在把对象交给spring容器去管理,就不用我们自己创建了,这就是IOC大概的思想。

DI依赖注入什么意思呢?

笔者也是初学者(orz有些地方不太懂,还请海涵),目前的理解是将bean的成员变量赋值-----也就是j将值注入到bean中 

如图:

applicationContext.xml配置:

 

 第一个bean标签对应的就是Pojo包下的User类对象

一些常用标签和属性的作用可以自行搜索  ┌( ´_ゝ` )┐

以上是我今天学习的内容,有错误的地方请一定讲出来   -- 跪拜

---end----

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值