网站内容策略,建设信用卡银行商城网站,福州制作公司网站,seo是什么意思电商目录
一、Spring框架的介绍
1.1 Spring框架的概述
1.2 Spring框架的优点 二、Spring的核心 IOC技术
2.1 什么是IOC
2.2 IOC的程序入门
2.3 IOC技术总结
2.4 Spring框架的Bean管理的配置文件方式 一、Spring框架的介绍
1.1 Spring框架的概述
Spring是一个开放源代码的…目录
一、Spring框架的介绍
1.1 Spring框架的概述
1.2 Spring框架的优点 二、Spring的核心 IOC技术
2.1 什么是IOC
2.2 IOC的程序入门
2.3 IOC技术总结
2.4 Spring框架的Bean管理的配置文件方式 一、Spring框架的介绍
1.1 Spring框架的概述
Spring是一个开放源代码的设计层面框架它解决的是业务逻辑层和其他各层的松耦合问题因此它将面向接口的编程思想贯穿整个系统应用。Spring的核心是控制反转IoC控制反转和面向切面AOP。简单来说Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
1.2 Spring框架的优点 1.方便解耦简化开发Spring就是一个大工厂可以将所有对象创建和依赖关系维护交给Spring管理。IOC的作用 2.AOP编程的支持Spring提供面向切面编程可以方便的实现对程序进行权限拦截、运行监控等功能。可扩展性 3.声明式事务的支持只需要通过配置就可以完成对事务的管理而无需手动编程。 4.方便程序的测试Spring对Junit4支持可以通过注解方便的测试Spring程序。 5.方便集成各种优秀框架Spring不排斥各种优秀的开源框架其内部提供了对各种优秀框架如Struts2、Hibernate、MyBatis、Quartz等的直接支持。 6.降低JavaEE API的使用难度Spring 对JavaEE开发中非常难用的一些APIJDBC、JavaMail、远程调用等都提供了封装使这些API应用难度大大降低。 二、Spring的核心 IOC技术
2.1 什么是IOC
IOC -- Inverse of Control控制反转将对象的创建权力反转给Spring框架
控制反转Inversion of Control缩写为IoC是面向对象编程中的一种设计原则可以用来减低计算机代码之间的耦合度。
解决问题使用IOC可以解决的程序耦合性高的问题Spring的工厂读取配置文件。
2.2 IOC的程序入门
项目中的目录结构 controller表现层 controller层的功能为请求和响应控制 controller层负责前后端交互接受前端请求调用service层接收service层返回的数据最后返回具体的页面和数据到客户端 dao持久层也被称为mapper层 dao层的作用为访问数据库向数据库发送sql语句完成数据的增删改查任务 pojo数据库实体类也被称为entity层model层 一般数据库一张表对应一个实体类类属性同表字段一一对应 service业务层 service层的作用为完成功能设计 service层调用dao层接口接收dao层返回的数据完成项目的基本功能设计 utils工具类 存放了一些公共部分的工具类主要是用于减少项目开发中的重复代码 步骤
① 创建普通maven Java工程不需要界面所以不用创建web项目需要导入spring依赖所以创建普通maven Java项目即可导入坐标依赖 dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.0.2.RELEASE/version/dependencydependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version/dependencydependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.12/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependencies
② 编写接口和实现类编写具体的实现方法
package com.qcby.service;/*** 业务层接口* 用户模块接口* 目的演示springIOC入门*/
public interface UserService {//接口中的抽象方法public void hello();
}
package com.qcby.service.impl;import com.qcby.service.UserService;/*** 用户模块实现类实现用户模块接口* 实现其抽象方法* 耦合度低*/
public class UserServiceImpl implements UserService {//实现入门Overridepublic void hello() {System.out.println(Hello IOC!!);}}③ 编写Spring核心的配置文件在 src/main/resources 目录下创建 applicationContext.xml 的配置文件名称是可以任意的但是一般都会使用默认名称
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd!--IOC管理bean--!--bean的意义是将该类的创建对象权力转给spring框架--bean iduserService classcom.qcby.service.impl.UserServiceImpl //beans
④ 把log4j.properties的配置文件拷贝到 src/main/resources 目录下做为 log4j 的日志配置文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE log4j:configuration SYSTEM log4j.dtdlog4j:configuration xmlns:log4jhttp://jakarta.apache.org/log4j/appender nameSTDOUT classorg.apache.log4j.ConsoleAppenderparam nameEncoding valueUTF-8/layout classorg.apache.log4j.PatternLayoutparam nameConversionPattern value%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n//layout/appenderlogger namejava.sqllevel valuedebug//loggerlogger nameorg.apache.ibatislevel valueinfo//loggerrootlevel valuedebug/appender-ref refSTDOUT//root
/log4j:configuration
⑤ 编写测试方法
package com.qcby.demo;import com.qcby.service.UserService;
import com.qcby.service.impl.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 测试类* 测试UserService交给spring管理* IOC入门*/
public class UserServiceTest {Testpublic void run1(){UserService userService new UserServiceImpl();UserService userService1 new UserServiceImpl();userService.hello();userService1.hello();System.out.println(userService);System.out.println(userService1);}Testpublic void run2(){// 使用Spring的工厂ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);// 通过工厂获得类:UserService userService (UserService) applicationContext.getBean(userService);UserService userService1 (UserService) applicationContext.getBean(userService);userService.hello();userService1.hello();System.out.println(userService);System.out.println(userService1);}
}
运行 run1() 方法可以看到使用new方法直接创建对象是创建了两个不同的对象这种做法在某些情况下可能会导致资源浪费所以我们选择 run2() 的方法进行创建对象 运行 run2() 方法可以看到虽然创建了两个对象但他们两个是单例是相同的只创建了一个对象可以对之前创建的对象进行重复使用使用这种方法也可以选择多例进行创建默认是单例可以在bean中进行属性设置也可以达成 run1() 中效果 2.3 IOC技术总结
ApplicationContext接口工厂的接口使用该接口可以获取到具体的Bean对象。
该接口下有两个具体的实现类
ClassPathXmlApplicationContext加载类路径下的Spring配置文件使用方法如下 ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);FileSystemXmlApplicationContext加载本地磁盘下的Spring配置文件使用方法如下
ApplicationContext applicationContext new FileSystemXmlApplicationContext(C:\\Users\\ZSW\\Desktop\\idea\\SpringIOC\\src\\main\\resources\\applicationContext.xml);推荐使用ClassPathXmlApplicationContext因为第二种写的是本地磁盘下的绝对路径在真正开发项目时不易修改使用
2.4 Spring框架的Bean管理的配置文件方式
id属性自己对Bean起的名字在约束中采用ID的约束唯一取值要求必须以字母开始可以使用字母、数字、连字符、下划线、句话、冒号 id:不能出现特殊字符
class属性Bean对象的全路径
scope属性scope属性代表Bean的作用范围 singleton单例默认值最常用的方式 prototype多例
Bean对象的创建和销毁的两个属性配置
说明Spring初始化bean或销毁bean时有时需要作一些处理工作因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法
init-method当bean被载入到容器的时候调用init-method属性指定的方法
destroy-method当bean从容器中删除的时候调用destroy-method属性指定的方法