Spring开源框架

为了解决企业应用开发的复杂性而创建的一个轻量级的Java 开发框架

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

Spring框架的目标是使得Java EE应用程序的开发更加简捷

基本框架:AOP、JEE、WEB、CORE、DAO、ORM

三种依赖注入方式:属性(Setter方法)注入,构造注入和接口注入

Spring  DAO:Spring提供了对JDBC的操作支持:JdbcTemplate模板工具类 。

Spring  AOP:Spring提供面向切面的编程,可以给某一层提供事务管理

Spring  Core:提供IOC容器对象的创建和处理依赖对象关系 。

Spring  JEE:J2EE开发规范的支持,例如EJB 。

Spring  WEB:Spring提供了对Struts、Springmvc的支持,支持WEB开发。与此同时Spring自身也提供了基于MVC的解决方案 

Spring  ORM:Spring可以与ORM框架整合

 

 

IOC容器

就是具有依赖注入功能的容器,是可以创建对象的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring的容器来做。所以每次调用不再实例化,加一个声明即可

简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦,如下图:

 

BeanFactory 是所有Spring应用的核心。Spring框架是建立在这个模块之上的,这也使得Spring成为一个容器。

IOC实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象

 

 

AOP容器(切面编程)

可以为某一类对象进行监督和控制从而达到对一个模块扩充的功能。比如说日志、安全、缓存等那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码

 

切面(Aspect):其实就是共有功能的实现。

通知(Advice):是切面的具体实现。

连接点(Joinpoint):就是程序在运行过程中能够插入切面的地点。

切入点(Pointcut):用于定义通知应该切入到哪些连接点上。

目标对象(Target):就是那些被通知的对象。

代理对象(Proxy):将通知应用到目标对象之后被动态创建的对象。

织入(Weaving):将切面应用到目标对象从而创建一个新的代理对象的过程。

把应用的业务逻辑与系统的服务分离开来

@Aspect
@Component
public class LogAspect {
    private static final Logger logger =LoggerFactory.getLogger(LogAspect.class);
    @Before("execution(* com.example.demo.controller.UserController.*(..))")
    public void beforeMethod(){//所有调用之前
        logger.info("beforeMethod"+new Date());
    }
    @After("execution(* com.example.demo.controller.UserController.*(..))")
    public void afterMethod(){//所有调用之后
        logger.info("afterMethod"+new Date());
    }
}

Bean

    每个Bean定义只存在一个实例,即Bean的scope默认是singleton的

 

 

实际例子

public class Hello {
    private String mess;
    public void steMess(String mess){
        this.mess=mess;
    }
    public void say(){
        System.out.println("hello"+mess);
    }
    public void setMess(String mess) {
        this.mess = mess;
    }
    public String getMess() {
        return mess;
    }
}

public static void main(String[] args){
        ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");
        Hello hello=(Hello)context.getBean("hello");
        hello.say();
}

//xml配置
<bean id="hello" class="Hello">
           <property name="mess" value="Spring">
           </property>
</bean>


我们可以把对象的创建和管理工作交给Spring去完成,不需要自己去new对象,也不要去设置对象的属性,只要写好Spring的配置文件,Spring就可以帮我们去做

 

SpringMVC

SpringMVC实现了mvc设计模式的web框架。

MVC是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

视图包括Adobe Flash和像XHTMLXML/XSL,WML等一些标识语言和Web services.

模型表示企业数据和业务规则

控制器接受用户的输入并调用模型和视图去完成用户的需求

 

首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handler进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。

spring mvc的入口是servlet,而struts2是filter。

spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值