spring和配置bean的基础知识

  1. Spring是什么?

答:struts是一个web框架(jsp/action/actionForm)

Hibernate是ORM框架,处于持久层

Spring是属于容器框架,用于配置bean,并维护bean之间关系的框架

  1. Spring中有一个重要概念:bean(是java中任何一种对象 javabean/service/action/数据源/dao,ioc(控制反转inverse of control)),DI(dependency injection 依赖注入)
  2. 层次图(以登陆验证来讲)

Spring可以管理,web层,业务层,DAO层,持久层。Spring可以配置各个层的组件(bean),并且维护各个bean之间的关系。

  1. 快速入门案例:

开发一个spring项目

  1. 引入spring的开发包(最小配置spring.jar 该包把常用的jar都包括,还需要一个写日志的包commons-logging.jar)
  2. 创建spring的核心文件 applicationContext.xml(这个名字不能瞎取),[hibernate有核心hibernate有核心文件hibernate.cfg.xml struts核心文件struts-config.xml],该文件一般放在src目录下,该文件中引入xsd文件,可以从给出的案例中拷贝一份文件。

Xsd,dtd文件主要作用是:用于约束你的xml文件里面的哪些元素和子元素以及出现的顺序。

  1. 配置bean

<bean id="userService" class="com.service.UserService">

</bean>

这句话相当于什么意思呢?当我们spring框架加载的时候,我们的spring就会去看这里面呢有没有这个bean,如果有的话就会起实例化这个bean(类),并且把它装载到内存中去。

<!-- 在容器文件中配置beanservice/dao/domin/action/数据源)

   id代表取得名字

   class中写上bean的全路径

 -->

 <!-- bean元素的作用是,当我们的spring框架加载的时候,spring就会自动的创建一个bean对象,并放入内存中,

   相当于 UserService userService = new UserService();

   userService.setName("Hello");

   使用了bean 就能够实现上面两句话,这个怎么办的到呢,这里采用了反射机制

   读了这个class文件,加载这个id的实体,通过这个属性的set方法进行实现,
   那么在UserService.java文件中的set方法必须写,不然值无法注入进去。

  -->

<bean id="userService" class="com.service.UserService">

<!-- 这里体现注入的概念   它将name的值注入进bean-->

   <property name="name">

      <value> Hello </value>

   </property>

</bean>>

</beans>

  1. 在Test.java中,我们怎么使用

import java.util.*;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

   public static void main(String[] args) {   

//     使用传统方法调用 userservicesayhello方法

//    UserService userService = new UserService();

//    userService.setNameString("Hello");

//    userService.sayHello();

      //使用spring来完成上面的任务

      //1.得到spring的容器applicationContext对象(容器对象),这个applicationContext对象对应文件applicationContext.xml

       //这个applicationContext对象其实就是对应的applicationContext.xml这个文件
        //而这个文件中配置的有bean,将来通过这个对象就能取出这个东西了

      ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

      UserService userService = (UserService) ac.getBean("userService");

      userService.sayHello();

   }

}

  1. 细节讨论?

传统方法和使用spring的方法

    1. 使用spring,没有new对象,我们把创建对象的任务交给spring框架
    2. spring的运行原理图:

5.3 我们再看spring

对上面案例总结:

spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可.

ioc是什么?

答 :ioc(inverse of controll ) 控制反转: 所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到spring的容器(即applicationContext.xml),而程序本身不再维护.

创建对象和维护对象控制权,反转到spring容器中。

DI是什么?

答: di(dependency injection) 依赖注入: 实际上di和ioc是同一个概念,spring设计者认为di更准确表示spring核心技术。

我们不能删除id=“byService”中的这个代码,因为上面会依赖这个代码进行程序执行,对象之间就是依赖关系。

猜你喜欢

转载自blog.csdn.net/manchengpiaoxue/article/details/84584878