JSP-Spring4学习笔记(一)入门概述

前言:

开发中会遇到这么一个问题:
问题1:代码耦合高:

public class EmployeeServiceImpl {      
    //依赖DAO           
    private IEmployeeDAO employeeDAO = new EmployeeDAOImpl(); 
}

问题:若把IEmployeeDAO的实现改成:EmployeeDAOHibernateImpl.

解决方法:

----->简单工厂设计模式

----->把创建对象的职责交给工厂来管理.      

到底工厂创建哪一个类的对象呢?我们是配置在配置文件中的(properties/xml). 

控制事务的繁琐:

对于事务操作,代码冗余,必须在所有需要控制事务的地方,手动用代码完成几乎完全相同的事务控制逻辑,开发效率低下,并且难以方便的处理事务嵌套需求。

如何降低业务逻辑部分之间耦合度,提高程序的可重用性,同时提高开发的效率!--->AOP

EmployeeService{
    public void save(...){
	      开启事务
      dao.save(...);
      提交事务
    }
    public void update(...){
	      开启事务
      dao.update(...);
      提交事务
    }
}

主要分散在方法前后,在真正的业务操作前后的代码,我们可以使用面向切面编程来解决.(关于面向切面编程后面会介绍)

Spring简介:

是什么

Spring是一个轻量级的DI/IoC和AOP容器的开源框架,

常见术语:
1、非侵入式设计:从框架角度可以这样理解,无需继承框架提供的类,这种设计就可以看作是非侵入式设计,如果继承了这些框架类,就是侵入设计,如果以后想更换框架之前写过的代码几乎无法重用,如果非侵入式设计则之前写过的代码仍然可以继续使用。

2、轻量级及重量级:轻量级是相对于重量级而言的,轻量级一般就是非入侵性的、所依赖的东西非常少、资源占用非常少、部署简单等等,其实就是比较容易使用,而重量级正好相反。

3、POJO:POJO(Plain Old Java Objects)简单的Java对象,它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它Java框架的类或接口。

4、容器(Container):在日常生活中容器就是一种盛放东西的器具,从程序设计角度看就是装对象的的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期。

Spring的优势:

1.低侵入/低耦合(降低组件之间的耦合度,实现软件各层之间的解耦。)

2.声明式事务管理

3.方便集成其他框架

4.降低JavaEE开发难度

5.Spring框架中包括JavaEE 三层的每一层的解决方案 (一站式) S(Strus)S(Spring)H(Hibernate) 后面基本上是学SSM(Mybernate)

Spring能帮我们做什么:

①.Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。

②.Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。

③.Spring能非常简单的帮我们管理数据库事务。

④.Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。

⑤.Spring还提供与第三方Web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。

⑥.Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。

DI/IoC

IoC:

Inverse of Control(控制反转): 读作“反转控制”,更好理解,不是什么技术,而是一种设计思想,好比于MVC。就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理

正控:若调用者需要使用某个对象,其自身就得负责该对象的创建。

反控:调用者只管负责从Spring容器中获取需要使用的对象,不关心对象的创建过程,也就是把创建对象的控制权反转给了Spring框架。

在这里完美地体现了好莱坞法则(Don’t call me ,I’ll call you)。

DI:

Dependency Injection(依赖注入): 从字面上分析:

IoC:指将对象的创建权,反转给了Spring容器;

DI :指Spring创建对象的过程中,将对象依赖属性(简单值,集合,对象)通过配置设值给该对象

IoC和DI其实是同一个概念的不同角度描述,DI相对IoC而言,明确描述了“被注入对象依赖IoC容器配置依赖对象”。

Container:容器,在生活中容器就是一种盛放东西的器皿,从程序设计角度看作是装对象的对象,因为存在对对象的存入、取出等操作,所以容器还要管理对象的生命周期。

HelloWord程序:

步骤:
1.准备jar包
   spring-beans-4.1.2.RELEASE.jar
   spring-core-4.1.2.RELEASE.jar
   报错再添加:
   com.springsource.org.apache.commons.logging-1.1.1.jar
2.开发HelloWorld程序
3.在applicationContext.xml中完成配置(spring-framework-reference\html\xsd-config.html)
4.启动容器
5.从容器中得到bean
6.调用bean响应的方法

1.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"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 配置bean  -->
	<bean id="helloWord" class="com._01_.hello.HelloWord">
		<!-- 给username属性设置:东 -->
		<property name="username" value="东"></property>
	</bean>
</beans>

 Test:

package com._01_.hello;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class App {
	//创建HelloWord对象,并调用sayHello方法
	@Test
	public void test01() throws Exception {
     HelloWord wHelloWord=new HelloWord();
     wHelloWord.sayHello();
	}
	//创建HelloWord对象,并调用sayHello方法
		@Test
		public void test1() throws Exception {
			Resource resource=new ClassPathResource("applicationContext.xml");
			BeanFactory beanFactory=new XmlBeanFactory(resource);
			HelloWord helloWord=(HelloWord) beanFactory.getBean("helloWord");
			helloWord.sayHello();
		}
}

 

 文件结构如下:

JSP-Spring4学习笔记(一)入门概述

运行效果如下:
JSP-Spring4学习笔记(一)入门概述

 

 

 

JSP-Spring4学习笔记(一)入门概述JSP-Spring4学习笔记(一)入门概述 忆_恒心 发布了102 篇原创文章 · 获赞 133 · 访问量 11万+ 私信 关注
上一篇:HelloWord


下一篇:Java入门程序HelloWord