SpringMVC学习日记 1.Spring框架

Spring简介

Spring框架是一个开源框架,由Rod Johnson组织和开发,生产目的在于简化企业级应用的开发。
主要特性
  • 非侵入(no-invasive)框架。
  • 提供一种一致的,在任何环境下都可以使用的编程模型。
  • 提高代码的重用性。
  • 使系统架构更容易选择。
  • 不重复造轮子。
核心技术
  • 反向控制(IOC)和依赖注入
        控制反转和依赖注入在Spring环境下是等同的概念,控制反转是通过依赖注入实现的。所谓的依赖注入是容器负责创建和维护对象间的依赖关系,而不是通过对象本身负责自己创建和解决自己的依赖。
    依赖注入是为了解耦,体现“组合”的思想。即假如你希望你的一个类具有某项功能的时候,你是选择让它继承具有此功能的一个类好呢,还是组合一个具有此功能的类?继承一个类,子类与父类耦合,而组合另一个类其耦合度将大大降低。
  • 面向切面编程(AOP)
        AOP面向切面编程,相对于OOP面向对象编程。
        Spring的AOP的存在目的是为了解耦,摆脱类与类之间的依赖关系,AOP可以让一组类共享相同的行为,OOP中只能通过继承父类或实现接口,并且继承是单继承,阻碍了更多的行为添加到一组类上,AOP弥补了OOP的不足。
    Spring支持AspectJ的注解式的切面式编程

    1. 使用@Aspect声明是一个切面
    2. 使用@After、@Before、@Around定义建言(advice),可以直接将拦截规则(切点)作为参数
    3. 其中@After、@Before、@Around参数的拦截规则为切点(PointCut),为了使切点复用,可以使用@PointCut专门定义拦截规则,然后在@After、@Before、@Around的参数中调用
    4. 其中符合条件的每一个拦截处作为连接点(JoinPoint)
  • 一致抽象性
        Spring所使用的大多数框架并不是自己提供的,而是使用了现成的框架。并且对同类的框架提供接口,如基于MVC的Web框架、ORM框架等。
  • 异常处理
        在Spring中提供了统一的异常类,如数据访问层的org.springFramework.dao.DataAccessException。而且这些类实际上是RuntimeException的子类,并不需要try….catch进行捕获,因此可以使处理异常的代码最小化。
  • 资源管理
        Spring可以管理很多其他的资源,如:JDBC、JNDI、JTA等,这使得管理这些资源变得十分容易。

基于Spring的Hello World

新建maven工程

单击File -> New -> Project -> Maven

输入Maven的坐标值

选择存储路径

修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.chen</groupId><artifactId>highlig_spring4</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.11.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>${java.version}</source><target>${java.version}</target></configuration></plugin></plugins></build></project>
编写功能类的Bean
package com.chen.service;import org.springframework.stereotype.Service;/*** created by chen* on 2017/9/23 17:37*///使用@Service注解申明当前FunctionService是Spring管理下的一个Bean。
//使用@Component、@Service、@Repository、@Controller是等效的,根据具体需要使用
@Service
public class FunctionService {public String sayHello(String message){return "Hello " + message + "!";}
}

使用@Service注解申明当前FunctionService是Spring管理下的一个Bean。使用@Component、@Service、@Repository、@Controller是等效的,根据具体需要使用

使用功能类Bean
package com.chen.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** created by chen* on 2017/9/23 17:41*/@Service
public class UseFunctionService {@Autowiredprivate FunctionService functionService;public String sayString(String str){return functionService.sayHello(str);}
}
  • 使用@Service注解申明当前UseFunctionService类是Spring管理的一个Bean
  • 使用@Autowired将FunctionService的实体Bean注入到UseFunctionService中,让UseFunctionService具备FunctionService的功能,此处使用JSR-330的@JSR-250的@Resource注解是等效的。
配置类
package com.chen.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/*** created by chen* on 2017/9/23 17:43*/
//@Configuration声明当前类是一个配置类
@Configuration
//@ComponentScan,自动扫描包名下所有只用@Service、@Component、@Repository和使用@Controller的类,并且注册为Bean
@ComponentScan("com.chen.service")
public class TestConfig {}
运行
package com.chen.test;import com.chen.config.TestConfig;
import com.chen.service.UseFunctionService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** created by chen* on 2017/9/23 17:47*/
public class MainTest {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TestConfig.class);//①UseFunctionService useFunctionService = context.getBean(UseFunctionService.class);//②System.out.println(useFunctionService.sayString("hahahahhahh"));context.close();}
}
  • 使用AnnotationConfigApplicationContext作为Spring容器,接受一个配置类作为参数
  • 获得申明配置的UseFunctionService
运行结果

SpringMVC学习日记 1.Spring框架相关推荐

  1. Java学习笔记-Day64 Spring 框架(二)

    Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...

  2. Spring框架学习笔记(1) ---[spring框架概念 , 初步上手使用Spring , 控制反转 依赖注入初步理解 ]

    spring官网 -->spring官网 spring5.3.12–>spring-framework 在线文档 --> Spring 5.3.12 文章目录 1.Spring概论 ...

  3. Spring 学习日记 (四) Spring 整合Mybaits 和 struts2 框架的配置文件

    其实也是挺无奈的  这东西永远这一棒子那一锤子的  太不系统了 哎 没办法 跟着项目走吧 首先准备的JAR包 需要配置的几个配置文件 配置spring applicationContext.xml   ...

  4. java spring框架怎么学_JAVA学习之路~spring框架(一)

    一.MVC思想M:Model 数据模型(javaBean实体类) V:View 视图(前端jsp,html等等) C:Controller 控制层(处理业务逻辑) 二.高级框架介绍Dao层: MyBa ...

  5. SpringMvc学习日记-基础知识

    一.域对象传值 1.1.Request域对象 给Request域传值有多种方式,具体如下: // Servlet原生Api方式@RequestMapping("/testRequestByS ...

  6. SpringMVC学习日记总结

    SpringMVC 1.回顾MVC 1.1.什么是MVC? MVC是模型,视图,控制器的简写,是一种软件设计规范 MVC主要作用是降低了视图与业务逻辑间的双向耦合 MVC不是设计模式,是架构模式 1. ...

  7. 学习笔记下载Spring框架

    地址:http://repo.springsource.org/libs-release-local/org/springframework/ 选择spring模块.版本,下载*****dist.zi ...

  8. spring框架 c p标签的区别_Spring学习初体验

    训练大纲(第057天)60 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第1 ...

  9. Spring 系列: Spring 框架

    第一部分:Spring 框架简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序 ...

最新文章

  1. MOS管安全工作区SOA
  2. oracle xtts 介绍,oracle_rman_xtts_v3
  3. 提高JS性能注意事项(转载)
  4. C语言源代码展示:常用转换函数实现原理
  5. 海龟画图 python太阳花_python 简单的绘图工具turtle使用详解
  6. 二叉搜索树 java_二叉查找树之 Java的实现【下】
  7. centos7 搭建本地git_小白也能看懂,30 分钟搭建个人博客!
  8. php连接 mysql的三种连接方式
  9. 批量为Word2010尾注加方括号[]的方法
  10. 一天一个西红柿,健康多多
  11. 数字逻辑综合工具-DC-04 ——怎样增加时序约束(Timing Constraints)
  12. Unity 场景切换间的内存清理
  13. 遇见你,用尽了我一生的幸运
  14. LinkedIn领英开发国外客户技巧,附提高好友邀请通过率7大模板
  15. USACO Section 1.2PROB Miking Cows
  16. lara with tp
  17. C语言从键盘获取一个小于1000的正数,要求输出它的平方根。
  18. 定义—个类MyRectangle代表矩形,为矩形定义getLength方法(获得矩形的长度)、getWidth方法(获得矩形的宽度)、setLength方法(设置矩形的长度)....
  19. 如何删除sql server中的重复数据
  20. Linux下tar简介

热门文章

  1. logback 的 access 模块
  2. SpringIOC容器介绍
  3. 百万数据报表导出:需求以及思路分析
  4. hibernate-validate
  5. 工程搭建:搭建子工程之分布式id生成器
  6. 数据库-优化-SQL及索引优化
  7. 模板打印:代码实现和总结
  8. 递归 递归的案例 递归的案例
  9. java动物飞翔接力赛源程序_java-submityourcode
  10. 在 Java 中,为什么需要创建内部类对象之前需要先创建外部类对象