理解什么是Spring?
03年,spring框架发布,通过10多年的发展,spring框架已经发展成JavaEE开发中的非常重要的一个框架。虽然还是有公司采用自己的方式来处理代码间的耦合问题,但是他们采用的方式依旧是Spring框架的基础,即:工厂模式与服务定位器模式等。
Spring是一个从实际开发中抽取出来的框架,它对代码中需要重复解决的步骤抽象成为了一个框架。留给开发者的仅仅是与特定应用相关的部分,大大提高了企业应用的开发效率。例外、Spring也提供了一种Template设计原理,对大量的通用步骤进行了封装,开发者只需调用Template,而无须自己再次实现那些通用步骤。
Spring是为企业应用开发提供的一个轻量级解决方案,包括:基于依赖注入的核心机制,基于AOP的声明式事务(联想下编程式事务),整合多种持久层技术的整合,整合很多优秀的WEB MVC框架等。Spring是致力于JavaEE应用各层的解决方案,而不是单单针对某一层。Spring贯穿表现层,业务层,持久层,但是Spring并不想取代那些已有的框架,而是以高度的开发性与它们无缝整合。
Spring框架的组成结构图:
在使用Spring框架时,必须使用到Spring Core Container(Sping容器),它代表了Spring框架的核心机制---IOC(控制反转)。
使用Spring框架的优点:
1、 低侵入式设计,代码的污染极低
2、 Spring容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
3、 Spring的AOP[(Aspect Orient Programming),也就是面向切面编程] 支持允许将一些通用任务如:安全,事务,日志等进行集中式处理,从而提供了更好的复用。
4、 Spring的ORM和DAO提供了与第三方持久化框架的良好整合,并简化了底层的数据库访问。
5、 Spring的高度开发性,并不强制应用完全依赖于Spring,开发者可自由选择Spring框架的部分或全部。
搭建一个简单的spring框架:
1、 首先创建一个web应用
2 导入必须的jar文件 需要导入的文件有:
3
1、 编写spring框架的应用上下文配置文件applicationContext.xml,该文件发在src目录下:
如:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xmlns:mvc="http://www.springframework.org/schema/mvc" 8 xmlns:context="http://www.springframework.org/schema/context" 9 xsi:schemaLocation="http://www.springframework.org/schema/beans 10 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 11 http://www.springframework.org/schema/context 12 http://www.springframework.org/schema/context/spring-context-3.0.xsd 13 http://www.springframework.org/schema/aop 14 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 15 http://www.springframework.org/schema/tx 16 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 17 http://www.springframework.org/schema/mvc 18 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 19 20 21 </beans>
建立mvc框架
1 package com.cy.dao.impl; 2 3 import com.cy.bean.UserInfo; 4 import com.cy.dao.IUserDao; 5 6 public class UserDaoImpl implements IUserDao { 7 8 @Override 9 public void addUser(UserInfo user) {//就不写实现了 10 System.out.println(user.getName()); 11 System.out.println("这是我的持久化类的具体实现,我在这儿的作业是对对象进行持久化!"); 12 } 13 14 }
1 package com.cy.service.impl; 2 3 import com.cy.bean.UserInfo; 4 import com.cy.dao.IUserDao; 5 import com.cy.service.IUserService; 6 7 public class UserServiceImpl implements IUserService{ 8 private IUserDao dao; 9 public void setUserDao(IUserDao dao){ 10 this.dao=dao; 11 } 12 @Override 13 public void addUser(UserInfo user) { 14 dao.addUser(user); 15 16 } 17 18 }
再到.xml文件中配置
1 <!-- id:指唯一标识,class:类路径 --> 2 <bean id="userServiceImpl" class="com.cy.service.impl.UserServiceImpl"> 3 <property name="userDao" ref="userDaoImpl"></property> 4 </bean> 5 <bean id="userDaoImpl" class="com.cy.dao.impl.UserDaoImpl"></bean>
1 package com.cy.action; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 import com.cy.bean.UserInfo; 7 import com.cy.service.IUserService; 8 9 public class UserAction { 10 11 public static void main(String[] args) { 12 ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); 13 IUserService service=(IUserService) ac.getBean("userServiceImpl"); 14 UserInfo user=new UserInfo(); 15 user.setName("小明"); 16 service.addUser(user); 17 18 19 20 } 21 22 }
结果为:
小明
这是我的持久化类的具体实现,我在这儿的作业是对对象进行持久化!
接下来会详细讲这里面的内容!