IoC是我们常用来讲对象的控制权转换到外部的一种做法,我们是基于Spring来进行使用的,我是在学习的时候使用了这个东西,从最复杂的讲道最简单的,这个东西并不难,重要的是去理解整个过程的实现

接下来我们开始说明一下IoC是个什么,IoC(控制反转),用俗话来理解,我们在后期维护如果更换了对象的名字,我们的维护难度就比较大,因为需要从新的编译、打包、测试等操作,而像我们经常使用的对象更是应该丢到一个配置文件中,动态的进行修改,这样的效率会大大的提高,不过屁事也会更多,原本写习惯了new的对象,现在要将对象包裹在配置文件中,所以Spring提供这样的一种配置,提供给各位开发者使用。

正式进入IoC中,我们使用Marven来管理项目,所以在pom.xml下我们需要导入spring-context的jar包,导入完成后,我们在resources下创建一个spring config的配置文件

这就是我们需要创建的配置文件了,创建完成之后,我们定义一个类和一个测试类

我们对这个配置文件进行一些配置,这里需要介绍一下我们使用的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 http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="settingDao" class="com.itheima.SettingDao"/></beans>

id是作为一个唯一的表示,是需要和用这个对象时的getbean操作中的名字相同

class是作为代表要创建对象的路径,也就是类的路径

public class SettingDao {void S(){System.out.println("the secoundy running");}
}

我们在测试类中,我们需要配置一些其他的东西

ApplicationContext 这是一个接口,不能直接new,所以我们new了它的子类,代表把这个spring-config的文件,配置进去,下面就和我们平常创建对象的方法不同了,我们只需要调用getBean获取需要的对象名字,然后强制转换为当前这个类型,就可以直接调用下面的方法了

public class test {public static void main(String[] args) {ApplicationContext acc = new ClassPathXmlApplicationContext("Springconfig.xml");SettingDao  settingDao= (SettingDao)acc.getBean("settingDao");settingDao.S();}}

获得结果

这就是我们使用的当中对象的方法,还有一种就是在类中声明对象,然后调用当中的方法,也就是下面这种


public class ServiceDao {public SettingDao settingDao;public void setting() {System.out.println("the main is running ");settingDao.S();}
}

我们像刚刚那样去调用肯定是会出错的,因为这是在一个类中又调用了一次获取对象,但是Spring就帮助我们解决了这样的问题,我们在配置文件中声明了property标签在bean标签中,这种行为我们称为依赖注入(DI)会用就行

<?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 http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="settingDao" class="com.itheima.SettingDao"/><bean id="serviceDao" class="com.itheima.ServiceDao"><property name="settingDao" ref="settingDao"/></bean>
</beans>

我们把测试类也改了,改成测试这个的

public class test {public static void main(String[] args) {ApplicationContext acc = new ClassPathXmlApplicationContext("Springconfig.xml");ServiceDao  serviceDao= (ServiceDao)acc.getBean("serviceDao");serviceDao.setting();}
}

一运行,发现出问题了

不过这个错误,比较明显,说了我们这个类中没有一个setter方法

我们在原本的类中加入一个set方法

public class ServiceDao {public SettingDao settingDao;public void setSettingDao1(SettingDao settingDao) {this.settingDao = settingDao2;}public void setting() {System.out.println("the main is running ");settingDao.S();}}

在测试一次发现成功了

注意:这里一样的serviceDao的id要和测试类中传进来的getBean中的名字相同,property中的name要和我们使用的setter方法中的名字相同,而后面的ref要和形参的名字相同,这样才不会报错

介绍了IoC中普通使用的方法,也是最复杂的方法,没有之一,名字对来对去的,很容易出错,后面补充简易的方法,这种刷一下就好了,知道有这么个东西就行

Java从IoC到注解开发(1)相关推荐

  1. 二、Java框架之Spring注解开发

    文章目录 1. IOC/DI注解开发 1.1 Component注解 @Component @Controller @Service @Repository 1.2 纯注解开发模式 1.3 注解开发b ...

  2. Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)

    1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...

  3. 【java学习之路】(java框架)007.IoC和DI注解开发

    IoC和DI注解开发 Spring配置数据源 数据源(连接池)的作用 • 数据源(连接池)是提高程序性能如出现的 • 事先实例化数据源,初始化部分连接资源 • 使用连接资源时从数据源中获取 • 使用完 ...

  4. Spring(三)——HelloSpring、IOC创建对象的方式、属性注入、自动装配、使用注解开发

    文章目录 1. 简介 2. IOC理论推导 3. HelloSpring 4. IOC创建对象的方式 4.1 使用无参构造创建对象(默认) 4.2 使用有参构造创建对象 5. Spring配置 5.1 ...

  5. 【Java从0到架构师】Spring - 纯注解开发

    纯注解开发 纯注解开发 - AOP 纯注解开发 - 整合 MyBatis 纯注解开发 - 事务管理 JSR 注解 JSR 注解 - @Resource.@Inject JSR 注解 - @PostCo ...

  6. Spring注解开发以及基于java的容器配置

    Spring4后的注解开发 使用bean.xml实现注解开发 需要导入aop包(如果没有导入该包,注解无效) beans.xml配置 <?xml version="1.0" ...

  7. spring-day02-IOC完成CRUD、注解开发IOC

    文章目录 一.今日内容 二.使用IOC完成改造CRUD a.引入依赖 b.创建表 c.实体类 ==原始方式== d.持久层 e.业务层 g.测试类 ==IOC方式== d.持久层 e.业务层 f.配置 ...

  8. JavaSSM笔记(一)Spring基础(JavaBean)(IoC理论)(AOP)(使用注解开发)

    在JavaWeb阶段,我们已经学习了如何使用Java进行Web应用程序开发,我们现在已经具有搭建Web网站的能力,但是,我们在开发的过程中,发现存在诸多的不便,在最后的图书管理系统编程实战中,我们发现 ...

  9. 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)注解开发

    Spring注解开发 Spring是轻代码重配置的框架,配置比较繁重,会影响开发效率.这个时候可以通过注解开发,注解代替xml配置文件可以简化配置,提高开发效率. Spring原始注解 注解分为原始注 ...

最新文章

  1. wxPython的简单应用
  2. Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
  3. 红黑树的删除_Python实现红黑树的删除操作
  4. SCR638红外接收管介绍
  5. 英语笔记-20151209
  6. jzoj1471-Y【bitset,dp,状压】
  7. JAVA常用的环境变量配置
  8. 前端学习(2613):action的方法
  9. Win11系统如何设置黑暗模式
  10. Redis五种数据结构应用场景
  11. java httpclient 返回xml_通过httpClient通过post向接口发送xml数据,并处理返回的xml报文...
  12. TP LINK交换机 console 超级终端链接设置
  13. 中e管家理财小方法让闲钱变成活钱
  14. BTSP——HDU2224The shortest path
  15. adb命令读取Android手机内存卡文件
  16. oracle中numeric是什么类型,numeric
  17. jsf中 binging的用法
  18. 计算机临时桌面是怎么回事,如何解决电脑开机后桌面空白问题?
  19. 动听的“教育之歌”,消费金融们的演奏响而不悦耳
  20. 12 行列式01--- 定义、计算 与性质: n级行列式的性质、行列式计算

热门文章

  1. 【Mac使用系列】Mac锁屏及快捷键
  2. 数字游戏(NOI Online 2022 普及组)
  3. 每日一题——最小生成树(哭死)
  4. 双电源8位I/O并行接口MRAM芯片MR256D08BMA45R
  5. 查看DAID设备Linux,linux 硬件信息查看命令
  6. angular使ng-zorro的nz-tree树控件
  7. 小米android10升级版本,小米10推送基于Android 11的MIUI12稳定版更新,升级太多内容...
  8. jQuery中的选择器引擎Sizzle 1
  9. jQuery源码分析系列(三)Sizzle选择器引擎-下
  10. OpenCV cvtColor BGR2YUV420