ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-02-02 21:07:10  阅读:252  来源: 互联网

标签:容器 入门 框架 HelloWord 对象 Spring JSP IoC 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();
		}
}

 

 文件结构如下:

运行效果如下:

 

 

 

忆_恒心 发布了102 篇原创文章 · 获赞 133 · 访问量 11万+ 私信 关注

标签:容器,入门,框架,HelloWord,对象,Spring,JSP,IoC,Spring4
来源: https://blog.csdn.net/qq_37457202/article/details/104149021

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有