一:spring基本概念

1)struts2是web框架,hibernate是orm框架

2)spring是容器框架,创建bean,维护bean之间的关系

3)spring可以管理web层,持久层,业务层,dao层,spring可以配置各个层的组件,并且维护各个层的关系

二:spring核心原理

1.IOC控制反转

概念:控制权由对象本身转向容器,由容器根据配置文件创建对象实例并实现各个对象的依赖关系。

核心:bean工厂

2.AOP面向切面编程

a.静态代理

根据每个具体类分别编写代理类

根据一个接口编写一个代理类

b.动态代理

针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类

三:简单的Spring入门案例

1.编写一个类:UserService

  1. <span style="font-size:18px;">package com.cloud.service;
  2. public class UserService {
  3. private String name;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public void sayHello(){
  11. System.out.println("hello:"+name);
  12. }
  13. }</span>

2.编写核心配置文件:applicationContext.xml

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  7. http://www.springframework.org/schema/mvc
  8. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.2.xsd
  11. http://www.springframework.org/schema/aop
  12. http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  13. http://www.springframework.org/schema/tx
  14. http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
  15. <!-- 在容器中配置bean对象 -->
  16. <!-- 下面这句等价于:UserService userService = new UserService() -->
  17. <bean id="userService" class="com.cloud.service.UserService">
  18. <!-- 等价于:userService.setName("SpringName"); -->
  19. <property name="name">
  20. <value>SpringName</value>
  21. </property>
  22. </bean>
  23. </beans>

3.编写测试类:Test

  1. <span style="font-size:18px;">package com.cloud.test;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. import com.cloud.service.UserService;
  5. public class Test {
  6. public static void main(String[] args) {
  7. ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  8. UserService userService = (UserService) ac.getBean("userService");
  9. userService.sayHello();
  10. }
  11. }</span>

四:spring原理总结

1.使用spring ,没有new对象,我们把创建对象的任务交给spring框架
2.spring
实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护beanbean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可.

Spring的基本原理相关推荐

  1. springcache使用笔记003_注释驱动的 Spring cache 基本原理,注意和限制,@CacheEvict 的可靠性问题

    基本原理 和 spring 的事务管理类似,spring cache 的关键原理就是 spring AOP,通过 spring AOP,其实现了在方法调用前.调用后获取方法的入参和返回值,进而实现了缓 ...

  2. Spring.NET的AOP怎么玩

    之前公司一直不让使用第三方组件,因此AOP方面的组建一直不能使用,很多面向切面的应用只能通过自己写一些GenericMethod的泛型方法来解决,有一些呆板.由于公司已经开始全面转Java,因此架构组 ...

  3. Spring Boot基础学习笔记02:Spring Boot项目单元测试、热部署与原理分析

    文章目录 零.学习目标 1.掌握Spring Boot单元测试实现 2.掌握Spring Boot热部署实现 3.熟悉Spring Boot基本原理 一.Spring Boot单元测试 (一)Spri ...

  4. Spring Security技术栈开发企业级认证与授权-笔记

    Spring Security 慕x网课程笔记:包括内容如下 MySQL Workbench 官方客户端:sql客户端security oauth2 social spring security sp ...

  5. spirng框架之spring security(一)

    文章目录 目录 一.spring security 核心功能 二.配置用户存储及自定义登录页 三.防范CSRF攻击 四.退出及获取登录用户信息 五.Spring Security基本原理 六.自定义用 ...

  6. 【Spring Security】基本功能介绍

    文章目录 1.spring security 简介 spring security 基本原理 2 入门项目 2.1 web工程配置 2.1 加入Spring Security 3. 参数详解 3.1. ...

  7. SPRING实现登陆

    使用 用户名+密码 的方式来登录,用户名.密码存储在数据库,并且支持密码输入错误三次后开启验证码,通过这样一个过程来熟悉 spring security 的认证流程,掌握 spring securit ...

  8. Spring Security、oauth2、单点登陆SSO的关系

    文章目录 概述 1. 什么是Spring Security 1.1 配置示例 1.2 spring security 基本原理 1.2 Spring Security存在的问题 2. 什么是oauth ...

  9. 全栈工程师薪水_2020 Java 全栈工程师进阶路线图,不可错过

    技术更新日新月异,对于初入职场或者刚开始学习的同学来说,经常会困惑该往那个方向发展,这一点所有刚开始学习的人基本都有这个体会的. 刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺 ...

最新文章

  1. Failed to resolve:aar
  2. java 加载中_Java 6类加载中更快的是什么?
  3. 开源docker轻量级管理平台shipyard部署(中文版)
  4. python 坐标连线_从具有和角度的坐标绘制线 - python
  5. python构建矩阵 x y_生成Python函数一半没问题,当前最正统的代码生成是什么样的?...
  6. stm32 薄膜键盘原理_市面上的笔记本键盘优缺点解析,看完秒懂
  7. Jenkins发布spring boot到hub.Docker 方法
  8. 【Qt教程】4.1 - Qt5 文件系统 QFile文件读写操作
  9. 删除linux系统中的eth0.bak与多余的网卡
  10. Redis set集合结构及命令详解
  11. Springboot在线电影订票系统
  12. docker的常用命令(镜像、容器常用操作)
  13. 项目npm install报错gyp info it worked if it ends with ok
  14. java.net.UnknownHostException: localhsot
  15. ssh和telnet客户软件ZOC如何设置UTF-8
  16. Springboot整合ES8(Java API Client)
  17. 一种通过篡改特定代码数据修复嵌入式产品BUG的方法
  18. 中标麒麟兆芯版7.0
  19. matlab各种潮流计算代码,基于MATLAB的潮流计算源程序代码
  20. Qt pro的一些小用法(qmake)

热门文章

  1. 元素偏移量offset系列及e.pageX(e.pageY)
  2. 【中国海洋大学】考研初试复试资料分享
  3. 50+ 个超实用的 DevOps 工具
  4. 如何从Windows轻松过渡到Linux?
  5. 苹果在国贸改造了一套房 智能家居圈都慌了!
  6. javapython学习教程_Java入门教程
  7. oracle 递归查询次数,Oracle递归查询的几种方法
  8. d3-V5 力引导布局实例图
  9. Service-黑名单来电自动挂断
  10. Linux Docker镜像部署 -- Dockerfile文件