Spring框架主要由七大模块组成。
核心模块 Spring Core模块是Spring的核心容器,他实现了IoC模式,提供了Spring框架的基础功能。在模块中包含组重要的BeanFactory类是Spring的核心类,负责对JavaBean的配置与管理。Spring Core模块采用Factory模式实现了IoC容器即依赖注入。Context模块 Spring Context模块继承BeanFactory类。它还提供了框架式的bean的访问方式和很多企业级的功能,如JNDI访问、支持EJB、远程调用、集成模板框架、E-mail和定时任务调度等。AOP模块 Spring集成了所有AOP功能,通过事务管理可以使任意Spring管理的对象AOP化。DAO模块 DAO模块提供了JDBC的抽象层,简化了数据库厂商的异常错误。O/R映射模块Web模块MVC模块 Spring Web MVC模块建立在Spring核心功能之上,这使它能拥有Spring框架的所有特性。Spring的配置结构如下图
ApplicationContext容器不仅提供了BeanFactory的多有特性,同时也允许使用更多的声明方式来得到开发人员需要的功能。
ClassPathXmlApplicationContext类 从当前类路径中检索配置文件并加载来创建容器,其语法格式如下: //获取到容器,容器配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //从容器中获取指定id的对象 People p = (People) context.getBean("p1");//对象不是new出来的,是从容器中get出来的 FileSystemXmlApplicationContext类 该类也是ApplicationContext接口的实现类,和1区别在于读取Spring配置文件的方式。它不再从类路径中获取配置文件,而是通过参数指定配置文件的位置,可以获取类路径之外的资源。 ApplicationContext context = new ClassPathXmlApplicationContext(String configLocation); WebApplicationContext类 WebApplicationContext是Spring的Web容器,有两种方法可以再Servlet中使用WebApplicationContext。第一种方法是在Servlet的web.xml文件中配置Spring的ContextLoaderListener监听器;第二种方法同样修改web.xml文件,在文件中添加Servlet,使用Spring的org.springframework.web.context.ContextLoaderServlet类。IoC将创建实例的任务交给IoC容器,这样开发应用代码时只需要直接使用类的实例,这就是IoC控制反转,即“依赖注入”,它使程序组件或类之间尽量形成一种松耦合的结构。
依赖注入有三种实现类型,Spring支持后两种:
接口注入Setter注入构造器注入想要在Spring IoC容器中获取一个bean,首先要在配置文件中的< beans>元素中配置一个子元素< bean>,Spring的控制反转机制会根据< bean>元素的具体配置来实例化这个bean实例。
<bean id="test" class="com.bean.Test">其中,id属性为bean的名称,class属性为对应的类名,这样通过BeanFactory容器的getBean(“test”)方法就可以获取到该类的实例。
首先创建用户的JavaBean,代码如下:
public class User{ private String name;//姓名 private Integer age;//年龄 private String sex; //性别 ... //省略Setter()和Getter()方法 }在Spring的配置文件ApplicationContext.xml中配置该JavaBean,代码如下:
<bean name="user" class="com.bean.User"> <property name="name"> <value>小强</value> </property> ... </bean>在用户JavaBean中创建构造方法,代码如下:
public class User{ private String name;//姓名 private Integer age;//年龄 private String sex; //性别 //构造方法 public User(String name,Integer age,String sex){ this.name = name; this.age = age; this.sex = sex; } }在Spring的配置文件ApplicationContext.xml中通过< constructor-arg>元素为JavaBean的属性赋值,代码如下:
<bean name="user" class="com.bean.User"> <constructor-arg> <value>小强</value> </constructor-arg> ... </bean>以上内容均来自《Java Web从入门到精通》,作为自己的学习笔记,为了记录自己学习和探索的过程,仅供交流和学习。