在 Intellij Idea 环境下初探 Spring Core (一) 之 IoC/DI

July 24, 2015 | 20:22

说说

Spring 对我来说是一个全新的东西, 今天学了一天, 收获不少. Spring的官方简介到处都是, 所以我就只写出我自己的感想. Eclipse 的教程也很多, 所以我写了个 Intellij 的.

Spring

Spring 框架是一个集合了很多东西的框架, 最核心最底层的就是IoC/DI. 在这个基础之上, 有很多诸如 AOC, ORM, WebMVC, DAO, Context 之类的功能(容器).

  • IoC/DI 控制反转, 依赖注入. 就是你的类对应的对象不用你来 new, 框架帮你 new, 帮你 new 完了再放到你指定的变量里面, 你直接用就行. 他还帮你管理他什么时候 new 什么时候 delete. 这样搞的好处是解耦.
  • AOC, 面向切面编程. 类似于在一个方法的外面套一层壳子, 壳子的功能是: 先(后)执行壳子里面某一段语句再执行该方法, 或者当该方法抛出异常的时候执行壳子里面的某段语句.
  • ORM 对象关系映射. 你只需要操纵对象, ORM会帮你对应地操作关系型数据库.

我觉得 Spring 里面很多的功能, 以及很多基于 Spring 的插件, 都是基于 Spring 的控制反转以及面向切面编程来实现的. 所以初学只要学好 IoC 和 AOP, 就可以打好基础.

在 Intellij 中用 IoC 写一个 Hello World 程序

虽然公司里不用 Intellij 的 new project 来创建项目(都有自己的mvn模板), 但是这个小程序还是用 new project 比较方便.

  • 创建一个裸的 Spring 项目
  • 在 src/main/java 目录下创建一个包 com.jecvay.springhello
  • 在包里创建一个 HelloWorld 类, 这个类就是一会儿用框架new, 用框架注入到 main 方法里面的对象的类.
  • 在 src/main/resources 下面创建一个 Beans.xml 文件, 内容如下. 这个文件主要就是声明了一个spring bean, 给出了id号, 以及对应的 class. 这个 class 里面还有 msg 这个属性, 可以直接在 bean 里面给出他的初始化值. 这里让 msg = "Jecvay".
  • 在包里创建一个 MainApp 类, 这是我们的程序入口

     

这里 HelloWorld obj = (HelloWorld) context.getBean("helloWorld");这一句就是让Spring在运行的时候帮我们 new 一个HelloWorld对象出来并将其引用注入到 obj 这个变量中.

这样就OK了.

注意

[注] Intellij 要求我们把 resources 文件夹在 Project Structure 中设置为 Resources 类型, 否则运行的时候可能报错找不到 Beans.xml 配置文件.

( 转载请注明: Jecvay Notes )

仅有 1 条吐槽

  • 2016/07/03

    结尾写的注释太棒啦,通过一下方法解决:File->Project Structure->module->Source标签下选择资源文件目录,点击Resource按钮,然后点击apply即可

说几句