Spring的入门

一:spring是什么?

官方定义:spring是一个开源的,控制反转(inversion of control—>IOC),面向切面的容器框架。

个人理解:框架是一种工具,框架的存在是为了解耦合,实现代码的高复用,避免重复造轮子,而spring的出现就是解决这种问题。

二:使用spring的好处

1.降低组件之间的耦合度,实现软件各层之间的解耦
2.可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管3.理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播
4.容器提供单例模式支持,开发人员不再需要自己编写实现代码
5.容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能
6.容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate
7.Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发

三:spring的几个重要的概念

1.控制反转(IOC)
应用程序不负责依赖对象的维护,而是交给其他的程序去创建,这样,控制权就由应用转到的外部容器,控制权的转移,叫控制反转

2.DI(依赖注入)
在程序运行期,由外部容器把依赖对象传给应用的过程 (注进来),称为依赖注入

3.AOP(面向切面编程)
一种编程思想,和过滤器的思想很想

四:spring程序案例(初步体验IOC思想以及依赖注入)

1.项目目录结构
在这里插入图片描述
核心配置文件beans文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans  default-lazy-init="true" 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 name="userDao_name" class="com.dao.UserDaoImpl"  lazy-init="true"  scope="prototype"></bean>
	
	<bean name="userServlet_name" class="com.servlet.UserServlet">
	
		<property name="dao" ref="userDao_name"></property>   <!-- 这是就是告诉spring,就是在运行的时候,创建这个出这个依赖对象,并注入进来 -->
	
	</bean>
</beans>

实体类:

package com.beans;

public class UserInfo {
	private  Integer id;
	private  String userName;
	private  String pwd;
	private  String note;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getNote() {
		return note;
	}
	public void setNote(String note) {
		this.note = note;
	}
	@Override
	public String toString() {
		return "UserInfo [id=" + id + ", userName=" + userName + ", pwd=" + pwd + ", note=" + note + "]";
	}
	
	
}

dao层:

package com.dao;

import com.service.IUserDao;

/*dao层,数据库访问层*/
public class UserDaoImpl implements IUserDao{

	//添加用户
	public void addUser() {
		System.out.println("addUser");

	}
	//删除用户
	public void delUser() {
		System.out.println("delUser");
		
	}
	//修改用户
	public void updateUser() {
		System.out.println("updateUser");
	}
}

业务层:

package com.service;

/*业务层,处理具体的事务*/
public interface IUserDao {
	void addUser();
	
	void delUser();
	
	void updateUser();
}

测试类:

package com.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.servlet.UserServlet;

/*测试用例,运行servlet,测试spring的依赖注入*/
public class Test {

	public static void main(String[] args) {
		// 初始化spring的容器
		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

		// 由spring得到一个servlet的实例
		UserServlet userServlet = ctx.getBean("userServlet_name", UserServlet.class);
		
		//调用业务层实现servlet的方法
		userServlet.doGet();
		
		ctx.close();

	}

}

总结:通过以上程序我们可以直接的感受到,和传统的对象在应用中直接创建不同,spring是通过工厂模式给在我们需要的时候给我们一个对象的实例,并且我们在配置beans的时候将数据访问层dao注入到servlet中,直接实现了对象创建和应用解耦合,在在我们需要不同的dao层的时候,我们只需在beans中修改就行,实现代码的高可用

spring方面的细节:对于spring来说,由spring创建的实例默认是单实例的,而且实例是在spring启动的时候直接创建,也可以设置成懒加载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值