Spring基础

理解什么是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 }

结果为:

小明
这是我的持久化类的具体实现,我在这儿的作业是对对象进行持久化!

接下来会详细讲这里面的内容!

时间: 2024-10-12 17:25:25

Spring基础的相关文章

Spring基础系列11 -- 自动创建Proxy

Spring基础系列11 -- 自动创建Proxy 转载:http://www.cnblogs.com/leiOOlei/p/3557964.html 在<Spring3系列9- Spring AOP——Advice>和<Spring3系列10- Spring AOP——Pointcut,Advisor拦截指定方法>中的例子中,在配置文件中,你必须手动为每一个需要AOP的bean创建Proxy bean(ProxyFactoryBean). 这不是一个好的体验,例如,你想让DAO层

Spring基础系列12 -- Spring AOP AspectJ

Spring基础系列12 -- Spring AOP AspectJ 转载:http://www.cnblogs.com/leiOOlei/p/3613352.html 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代码. Pointcut:注入Advice的位置,切入点,一般为某方法. Advisor:Advice和Pointcut的结合单元,以便将Advice和Pointcut分开实现灵活配置. Aspe

Spring基础系列8 -- Spring自动装配bean

Spring基础系列8 -- Spring自动装配bean 转载:http://www.cnblogs.com/leiOOlei/p/3548290.html 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiring ‘byType 4.      Auto-Wiring ‘constructor’ 5.      Auto-Wiring ‘autodetect’ Spring Auto-Wiring Be

Spring基础系列7 -- 自动扫描组件或者bean

Spring基础系列7 -- 自动扫描组件或者bean 转载:http://www.cnblogs.com/leiOOlei/p/3547589.html 一.      Spring Auto Scanning Components —— 自动扫描组件 1.      Declares Components Manually——手动配置component 2.      Auto Components Scanning——自动扫描组件 3.      Custom auto scan comp

Spring基础系列6 -- Spring表达式语言(Spring EL)

Spring基础系列6 -- Spring表达式语言(Spring EL) 转载:http://www.cnblogs.com/leiOOlei/p/3543222.html 本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.SpEL是类似于OGNL和JSF EL的表达式语言,能够在运行时构建复杂表达式,存取对象属性.对象方法调用等.所有的SpEL都支持XML和Annotation两种方式,格式:#{ SpEL exp

Spring基础系列9 -- Spring AOP

Spring基础系列9 -- Spring AOP 转载:http://www.cnblogs.com/leiOOlei/p/3556054.html Spring AOP即Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题.简单地说,就是一个拦截器(interceptor)拦截一些处理过程.例如,当一个method被执行,Spring AOP能够劫持正在运行的method,在met

spring基础知识(三)——aop

spring基础知识(三)--aop面向切面编程 1.概念术语 aop面向切面编程(Aspect ariented Programming) 在开始之前,需要理解Spring aop 的一些基本的概念术语(总结的个人理解,并非Spring官方定义): 切面(aspect):用来切插业务方法的类. 连接点(joinpoint):是切面类和业务类的连接点,其实就是封装了业务方法的一些基本属性,作为通知的参数来解析. 通知(advice):在切面类中,声明对业务方法做额外处理的方法. 切入点(poin

spring 基础回顾 tips01

spring 属性注入时,类中必须有setter 和 getter方法. spring配置文件中: java业务类中注入DAO: private StudentDao studentDao; // 通过属性注入 public StudentDao getStudentDao() { return studentDao; } public void setStudentDao(StudentDao studentDao) { this.studentDao = studentDao; } spri

spring 基础回顾 tips02

spring注入list .set. map. properties 1.list 在xml中这样写: <property name="list"> <list> <value>Michael Huang</value> <ref bean="student"></ref> <value>110</value> </list> </property>

Spring 基础概念——DI、IOC

一.IOC 控制反转 package com.qunar.studyspring.bean; import com.qunar.studyspring.dao.PersonDao; import com.qunar.studyspring.object.Person; /** * 这是一个没有控制反转的例子 * @author liqiu * */ public class PersonServiceBean { private PersonDao personDao = new PersonD