【SSH系列】初识spring+入门demo

简介:        学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍SSH中的spring,Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。

       学习过了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的相关知识点,敬请期待。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
人工智能 Java API
Spring AI 实战|Spring AI入门之DeepSeek调用
本文介绍了Spring AI框架如何帮助Java开发者轻松集成和使用大模型API。文章从Spring AI的初探开始,探讨了其核心能力及应用场景,包括手动与自动发起请求、流式响应实现打字机效果,以及兼容不同AI服务(如DeepSeek、通义千问)的方法。同时,还详细讲解了如何在生产环境中添加监控以优化性能和成本管理。通过Spring AI,开发者可以简化大模型调用流程,降低复杂度,为企业智能应用开发提供强大支持。最后,文章展望了Spring AI在未来AI时代的重要作用,鼓励开发者积极拥抱这一技术变革。
4590 71
Spring AI 实战|Spring AI入门之DeepSeek调用
|
安全 Java 数据库
Spring Security 实战指南:从入门到精通
本文详细介绍了Spring Security在Java Web项目中的应用,涵盖登录、权限控制与安全防护等功能。通过Filter Chain过滤器链实现请求拦截与认证授权,核心组件包括AuthenticationProvider和UserDetailsService,负责用户信息加载与密码验证。文章还解析了项目结构,如SecurityConfig配置类、User实体类及自定义登录逻辑,并探讨了Method-Level Security、CSRF防护、Remember-Me等进阶功能。最后总结了Spring Security的核心机制与常见配置,帮助开发者构建健壮的安全系统。
2588 0
|
10月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
796 2
|
Java 关系型数据库 MySQL
【Spring】【事务】初学者直呼学会了的Spring事务入门
本文深入解析了Spring事务的核心概念与使用方法。Spring事务是一种数据库事务管理机制,通过确保操作的原子性、一致性、隔离性和持久性(ACID),维护数据完整性。文章详细讲解了声明式事务(@Transactional注解)和编程式事务(TransactionTemplate、PlatformTransactionManager)的区别与用法,并探讨了事务传播行为(如REQUIRED、REQUIRES_NEW等)及隔离级别(如READ_COMMITTED、REPEATABLE_READ)。
934 1
|
前端开发 Java API
基于 Spring Boot 3 与 React 的 Java 学生信息管理系统从入门到精通实操指南
本项目基于Spring Boot 3与React 18构建学生信息管理系统,涵盖前后端开发、容器化部署及测试监控,提供完整实操指南与源码,助你掌握Java全栈开发技能。
667 0
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
1316 0
|
存储 安全 Java
Spring Security 入门与详解
Spring Security 是 Spring 框架中的核心安全模块,提供认证、授权及防护功能。本文详解其核心概念,包括认证(Authentication)、授权(Authorization)和过滤器链(Security Filter Chain)。同时,通过代码示例介绍基本配置,如 PasswordEncoder、UserDetailsService 和自定义登录页面等。最后总结常见问题与解决方法,助你快速掌握 Spring Security 的使用与优化。
2969 0
|
存储 安全 Java
Spring Security 入门
Spring Security 是 Spring 框架中的安全模块,提供强大的认证和授权功能,支持防止常见攻击(如 CSRF 和会话固定攻击)。它通过过滤器链拦截请求,核心概念包括认证、授权和自定义过滤器。配置方面,涉及密码加密、用户信息服务、认证提供者及过滤器链设置。示例代码展示了如何配置登录、注销、CSRF防护等。常见问题包括循环重定向、静态资源被拦截和登录失败未返回错误信息,解决方法需确保路径正确和添加错误提示逻辑。
1054 2
Spring Security 入门
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
1183 7
Spring Boot 入门:简化 Java Web 开发的强大工具