【SSH系列】初识spring+入门demo
学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍SSH中的spring,Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。今天这篇博文,小编将从what、why、how等方面对spring进行一个初次的介绍,希望对有需要的小伙伴有需要,还请小伙伴多多指教。
what
说了这么多,那spring到底是什么呢?她可不仅仅是春天哦,简单来说,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。总之,Spring就是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。小编总结一下几点,不足之处,还请各位小伙伴补充:
a、Spring的核心是一个轻量级(Lightweight)的容器(Container);
b、Spring是实现IoC(Inversionof Control)容器和非入侵性(No intrusive)的框架;
c、Spring提供AOP(Aspect-oriented programming)概念的实现方式。
d、Spring提供对持久层(Persistence)、事物(Transcation)的支持。
e、Spring供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装。
f、Spring提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。
总之,Spring是一个全方位的应用程序框架。
why
那我们为什么要使用spring呢?她到底有着怎么样的魔力呢?你可能正在想,Spring不过就是另外一个的framework,当已经有许多开放源代码(和专有) J2EE framework时,我们为什么还需要Spring Framework?小编总结以下几点:
a、Spring定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理我们的业务对象。
b、 Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构
仍然是内在稳定的。在spring中,我们能得到最大的价值。比如,我们可能选择仅仅使用Spring来简单化JDBC的使用,
或用来管理所有的业务对象。
c、Spring的设计从底部帮助我们编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。
d、Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理.
e、Spring集成了各种优秀的框架,更加难能可贵的是,Spring不排斥各种优秀的开源框架,内部提供了对各种
优秀框架如Struts、Hibernate、MyBatis等的支持。
how
通过前面的介绍,我们知道了Spring是什么,以及我们为什么要使用Spring,那么Spring到底如何使用呢?接下来小编通过一个简单的demo讲解一下。
第一步、编写UserDao的代码部分,代码如下所示:
package com.bjpowernode.spring.dao;
public interface UserDao {
public void addUser(String username,String password);
}
第二步、建立类UserDao4MysqlImpl和UserDao4OracleImple,代码如下所示:
package com.bjpowernode.spring.dao;
public class UserDao4MySqlImpl implements UserDao {
public void addUser(String username,String password){
System.out.println("UserDao4MySqlImpl.addUser");
}
}
UserDaoOracleImpl代码如下所示:
package com.bjpowernode.spring.dao;
public class UserDao4OracleImpl implements UserDao {
public void addUser(String username,String Password){
System.out.println("UserDao4OracleImpl.addUser");
}
}
第三步、编写UserManager接口,代码如下所示:
package com.bjpowernode.spring.manager;
public interface UserManager {
public void addUser(String username,String password);
}
第四步、编写UserManager的实现部分,代码如下所示:
import com.liang.spring.dao.UserDao;
public class UserManagerImpl implements UserManager {
//定义一个成员变量,使用构造方式赋值
private UserDao userDao;
public UserManagerImpl(UserDao userDao) {
this.userDao = userDao;
}
/**
* set注入
* @param userDao
*/
@Override
public void addUser(String userName, String password) {
userDao.addUser(userName, password);
}
}
第五步、编写client里面的内容,代码如下所示:
package com.bjpowernode.spring.client;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.bjpowernode.spring.dao.UserDao4MySqlImpl;
import com.bjpowernode.spring.manager.UserManager;
import com.bjpowernode.spring.manager.UserManagerImpl;
public class Client {
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
//ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
UserManager userManager = (UserManager)factory.getBean("userManager");
//UserManager userManager = new UserManagerImpl(new UserDao4MySqlImpl());
userManager.addUser("张三", "123");
}
}
第六步、编写Spring的配置文件,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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="userDao4Mysql" class="com.bjpowernode.spring.dao.UserDao4MySqlImpl"/>
<bean id="usrDao4Oracle" class="com.bjpowernode.spring.dao.UserDao4OracleImpl"/>
<bean id="userManager" class="com.bjpowernode.spring.manager.UserManagerImpl">
<!--
<constructor-arg ref="userDao4Mysql"/>
-->
<!--
<constructor-arg ref="usrDao4Oracle"/>
-->
<property name="userDao" ref="usrDao4Oracle"/>
</bean>
</beans>
小编寄语:该博文小编主要介绍了spring的基础知识,从什么是spring,为什么要用spring,以及简单的入门demo,编写demo的步骤可以简单的总结为以下几点:
a、spring的依赖包配置:
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar
b、提供spring配置文件applicationContext.xml;
c、提供log4j.properties配置文件;
d、在UserManager中提供构造函数,让spring将UserDao实现注入(DI)过来;
e、让spring管理我们对象的创建和依赖,必须将依赖关系配置到spring的核心配置文件中;
f、编写客户端;
在后续的博文中小编将继续介绍spring的相关知识点,敬请期待。
【SSH系列】初识spring+入门demo的更多相关文章
- 【SSH系列】spring中为什么要使用IOC
开篇前言 在前面的博文中,小编主要简单的介绍了spring的入门知识,随着学习的深入,我们知道spring最核心的两大技术,IOC和AOP,这两个技术也是spring最耀眼的地方,在后续的博文中小编将 ...
- spring 入门demo
相关资源 官网地址:http://projects.spring.io/spring-boot/ 创建maven项目 勾选箭头处,创建一个简单的项目 填写groupId和artifactId,点击确 ...
- 矿Spring入门Demo
第一步:输入Spring jar 包裹 Spring核心包(4个) 日志包(2个) jdbc模板支持(1个) spring-jdbc-3.2.0.RELEASE.jar 模板相关事务处理包(1 ...
- idea Java spring 入门 demo
根据这个 来实现 理解 https://www.cnblogs.com/xing901022/p/3963962.html 这里没有说如何导入包,现在我们用 idea 来实现 新建项目结构后 RUN ...
- Spring Security简介与入门Demo
1:Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配 ...
- spring security入门demo
一.前言 因项目需要引入spring security权限框架,而之前也没接触过这个一门,于是就花了点时间弄了个小demo出来,说实话,刚开始接触这个确实有点懵,看网上资料写的权限大都是静态,即就是在 ...
- Spring MVC入门Demo
1 参考http://blog.csdn.net/haishu_zheng/article/details/51490299,用第二种方法创建一个名为springmvcdemo的Maven工程. 2 ...
- Spring Boot demo系列(二):简单三层架构Web应用
2021.2.24 更新 1 概述 这是Spring Boot的第二个Demo,一个只有三层架构的极简Web应用,持久层使用的是MyBatis. 2 架构 一个最简单的Spring Boot Web应 ...
- 【SSH系列】---Hibernate的基本映射
开篇前言 在前面的博文中,小编分别介绍了[SSH系列]-- hibernate基本原理&&入门demo,通过这篇博文,小伙伴们对hibernate已经有了基本的了解,以及h ...
随机推荐
- 云如何让App开发更简单?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 互联网"下半场",移动App开发对于质量.速度的要求更加苛刻.4月初,腾讯云正式上线移动开发平台MobileLine,借 ...
- MongoDB 分片集群搭建
一.概述 分片是一种在多台机器上分配数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作.有两种解决系统增长的方法:垂直扩展和水平扩展. 垂直扩展涉及增加单个服务器的容量,例如使用 ...
- 自动化运维:使用flask+mysql+highcharts搭建监控平台
1.前言 本来想做一个比较完善的监控平台,只需要做少许改动就可以直接拿来用,但是在做的过程中发现要实现这个目标所需的工作量太大,而当前的工作中对其需求又不是特别明显.所以就退而求其次,做了一个类似教程 ...
- python文件结构与import用法
首先上一张总结图: 在pycharm中,一般不会将当前文件目录自动加入自己的sourse_path.如果遇到无法import同级目录下的其他模块, 右键make_directory as-->S ...
- 使用C# (.NET Core) 实现组合设计模式 (Composite Pattern)
本文的概念性内容来自深入浅出设计模式一书. 本文需结合上一篇文章(使用C# (.NET Core) 实现迭代器设计模式)一起看. 上一篇文章我们研究了多个菜单一起使用的问题. 需求变更 就当我们感觉我 ...
- [CEOI 2004]Sweet
Description 题面链接 有 \(n\) 种糖果.第 \(i\) 种糖果有 \(m_i\) 个.取出一些糖果,至少 \(a\) 个,但不超过 \(b\) 个.求方案数. \(1\leq n\l ...
- ●洛谷P3242 [HNOI2015]接水果
题链: https://www.luogu.org/problemnew/show/P3242 题解: 整体二分,扫描线+树状数组. 详细的题解:http://blog.csdn.net/thy_as ...
- 洛谷4月月赛R1
T1.题目大意:n个人站成一排,有m个团队,每个人有且属于一个团队,可以让若干个人出队,任意交换这些人的位置后再站回去,问要让所有同一团队的人连续地站在一起,至少要出队几个.(n<=10^5,m ...
- Entity Framework DBContext 增删改查深度解析
Entity Framework DBContext 增删改查深度解析 有一段时间没有更新博客了,赶上今天外面下雨,而且没人约球,打算把最近对Entity Framework DBContext使用的 ...
- Android毕业设计-微圈
勤拂拭软件出品,必属精品 : 勤拂拭软件 去年做了一个类似于我的朋友圈的项目,主要功能就是用户可以实时发表自己的动态,好友可以评论点赞什么的,可以建群,聊天啊,拉黑啊,反正是一个不错的社交软件,包含服 ...