Spring IoC学习笔记(2):初步配置bean以及一般操作

来源:互联网 发布:2017购物软件排行 编辑:程序博客网 时间:2024/06/06 03:12

之前写过用注解配置bean的文章,但是我还是忍不住又开始写一些基本的使用和配置,这就好像本来你已经用Java8,很爽了,突然遇到用Java1.5之前写的代码,发现自己不会,这很丢脸的好吧!!

关于Spring到底怎么好,就不废话,网上有很多说法,甚至说可以代替JavaEE,但是个人感觉这个框架太大了,感觉有没有!!

关于spring IoC,个人理解可以把它看成是专门提供各种服务的一个机构,而我们自己声明的类,如果被放入其中,则会享受这种服务。打个比喻,有一公主,如果她想要什么只要和下属说一声就可以,不用自己亲自去找,下属就会提供给她,但是前提这个 人得是公主,必须在皇宫中,对应着我们的IoC容器就是皇宫,要被操作的类就是公主。

使用Spring首先要先导入包,如果只是使用基本的功能,只需要导入基本的几个就行,其他功能按需增加。最简单的依赖如下:

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.2.2.RELEASE</version></dependency>

spring-beans和spring-context是spring IoC容器的基础,如果只是向下面这样使用最基本的IoC特性,这两个配置就可以了。

  • spring-beans:是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行IoC操作相关的所有类;
  • spring-context:为Spring核心提供了大量扩展。可以找到使用ApplicationContext特性时所需的全部类,JDNI所需的全部类等,以及对JavaEE的特性的支持。
另外spring-core提供了spring框架的核心工具类,被很多的其他模块所引用,所以使用时最好也加上。
配置bean其实就是把bean放到spring的IoC容器中,BeanFactory从名字可以看出它是工厂模式的实现,实际上是实例化,配置和管理众多bean的容器,在实例化bean之前先要实例化spring IoC容器,这样才能从它里面来取得bean实例,它有好多的实现类,如下有几种:
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));UserService service = (UserService) factory.getBean("userService");
但是我们一般都是用ApplicationContext来获取容器中的bean,这个接口是BeanFactory的孙子接口,它不仅提供和BeanFactory相同的功能,而且还有许多额外的功能,除了对内存非常关注,否则一般都会用ApplicationContext,因为这样更方便。
ApplicationContext有两个比较常用的实现类,分别是FileSystemXmlApplicationContext和ClassPathXmlApplicationContext,使用如下:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserService service = (UserService) context.getBean("userService");

下面是第一个配置文件,顺便说一下文件名是随意的(开始时以为必须是applicationContext.xml,因为是默认的)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"><bean id="userService"  class="com.demo.SpringIoC.service.UserService"/></beans>
使用时要导入不同模块的命名空间和文件,好多IDE都有对应的插件,否则肯定会烦死。

<bean />标识一个类的对象,id是它的标识符,以便在容器中能被唯一表示,同时可以通过getBean()获得指定bean的引用,class是全限定名,从这可以看出bean实例化的过程是通过反射实现的,那么这就有一个问题了,大家都知道通过反射实例化一个类,要求这个类必须有一个无参的构造器,如果没有的话,则会出现如下的错误:


相关文章:

  • spring 4 jar 在 pom中的配置及jar作用的简要说明
  • Introduction to the Spring IoC container and beans
0 0
原创粉丝点击