天天看点

Spring框架一、简介二、Spring基本组成三、Spring配置文件(使用过程)四、Spring优点五、Spring特点

文章目录

  • 一、简介
    • 1、什么是JavaBean
    • 2、什么是EJB
    • 3、JavaBean和EJB的区别
  • 二、Spring基本组成
  • 三、Spring配置文件(使用过程)
  • 四、Spring优点
  • 五、Spring特点
    • 1、控制反转(IoC)
    • 2、面向切面(AOP)

一、简介

Spring框架是由于软件开发的负责性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。

1、什么是JavaBean

  • JavaBean是一种Java语言写成的可重用的Java组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。
  • 属性符合上述模式,其他Java类可以通过**自省机制(反射机制)**发现和操作这些JavaBean的属性。
  • JavaBean包含属性、方法、事件等特性。

JavaBean是一个遵循特定写法的Java类,具有以下特征:

  • 这个Java类必须具有一个无参的构造函数
  • 属性必须私有化。
  • 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。

    什么是javabean及其用法

2、什么是EJB

EJB是Enterprise Java Beans技术的简称, 又被称为企业Java Beans。EJB技术的诞生标志着Java Beans的运行正式从客户端领域扩展到服务器领域。

3、JavaBean和EJB的区别

  • EJB运行在EJB容器中的JavaBean。一个完整的JavaEE服务器应该包括Web容器和EJB容器。
  • Web容器无法运行EJB,同时所有的JavaBean都是在服务器端进行的。
  • JavaBean是由容器所创建的(比如Tomcat),JavaBean相当于com组件,是不能被跨进程访问的
  • EJB(enterprise java bean)相当于dcom组件,是可以远程访问的(跨进程,跨平台)。但是ejb组件必须放在向webspere \ weblogic这样的容器里面。ejb客户端不会直接访问到ejb组件,而是通过容器来访问的。因为ejb组件都是容器创建和管理的。所以ejb客户端是通过容器来真正的访问ejb组件的。

二、Spring基本组成

Spring框架一、简介二、Spring基本组成三、Spring配置文件(使用过程)四、Spring优点五、Spring特点
  • 1、最完善的轻量级核心框架。
  • 2、通用的事务管理抽象层。
  • 3、JDBC抽象层。
  • 4、集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps。
  • 5、AOP功能。
  • 6、灵活的MVC Web应用框架。

三、Spring配置文件(使用过程)

  • 1、首先在Spring核心配置文件applicatiionContext.xml中使用bean标签创建一个对象
<bean name="banji" class="com.study.spring.entity.Banji">
	<property name="id" value="1"/>
	<property name="name" value="java"/>
</bean>
           
  • 2、创建Spring容器
    • 在xml中创建的bean都会new出对象放到Spring容器 (调用类中的无参构造方法)
    • 底层实现:通过反射。在bean中class包名+类名拿到字节码对象,通过反射new对象
    • 从Spring容器中根据名字取出new出来的对象
  • 3、给取出的对象赋值(Spring属性注入)
    • set()方法注入
    <bean scope="singleton" name="student" class="com.study.spring.entity.Student">
    	<property name="id" value="2"/>
    	<property name="name" value="张三"/>
    	<property name="age" value="23"/>
    	<property name="gender" value="男"/>
    	<property name="banji" ref="banji"/> <!--ref 引用    name是类中属性,ref是new出来的对象-->
    </bean>
               
    • 构造方法注入
    <bean name="banji" class="com.study.spring.entity.Banji">
    	<constructor-arg name="id" value="2"/>
    	<constructor-arg name="name" value="java2107"/>
    </bean>
    
    <bean scope="singleton" name="student" class="com.study.spring.entity.Student">
    	<constructor-arg name="id" value="2"/>
    	<constructor-arg name="name" value="张三"/>
    	<constructor-arg name="age" value="23"/>
    	<constructor-arg name="gender" value="男"/>
    	<constructor-arg name="banji" ref="banji"/> <!--ref 引用    name是类中属性,ref是new出来的对象-->
    </bean>
               

四、Spring优点

  • JAVA EE应该更加容易使用。
  • 面向对象的设计比任何实现技术(比如JAVA EE)都重要。
  • 面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零。
  • 代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单。
  • JavaBean提供了应用程序配置的最好方法。
  • 在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。

五、Spring特点

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1、控制反转(IoC)

  • Spring就是一个大的内存容器(一块内存区域),三层架构里面上一层不需要再去new下一层对象,在上一层只需要写下一层的接口,new对象由Spring容器帮我们完成,各层直接向Spring容器要对象就可以。
  • 对象的创建交给外部容器来完成(这里就是交给Spring容器),这就叫控制反转。
  • 依赖注入,应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
public class StudentController {
    // IStudentService studentService = new StudentServiceImpl();
    private IStudentService studentService;// 创建对象  也是一个属性

    // 通过set方法注入,必须要写一个set方法
    // DI 依赖注入
    public void setStudentService(IStudentService studentService) {
        this.studentService = studentService;
    }

    public void selectAll() {
        studentService.selectAll();
    }
}
           
// 注解方式
@Controller("courseController")
public class CourseController {
    // <property name="studentService" ref="studentService"/>
    // 通过注解方式注入
    @Resource(name = "courseService")
    private ICourseService courseService;

    // 不需要set方式注入

    public void selectAll() {
        System.out.println("CourseController.selectAll");
        courseService.selectAll();
    }
}
           
@Controller
public class BanjiController {
    @Autowired
    private IBanjiService banjiService;

    public void selectAll() {
        System.out.println("BanjiController.selectAll");
        banjiService.selectAll();
    }
}
           

2、面向切面(AOP)

  • 让关注点(事务处理、权限、日志)和业务代码分离。
  • Spring提供了**面向切面编程(AOP)**的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
Spring框架一、简介二、Spring基本组成三、Spring配置文件(使用过程)四、Spring优点五、Spring特点