美文网首页
02.Spring基础

02.Spring基础

作者: 过往入梦 | 来源:发表于2017-11-13 00:56 被阅读0次

Spring简史:

  • Spring1.x时代:xml配置
  • Spring2.x时代:注解配置(Jdk1.5引入注解),人们的选择是基本配置用xml,业务配置用注解
  • Spring3.x时代:Java配置
  • Spring4.x和Spring Boot都推荐使用Java配置

Spring框架本身有四大原则:

  • 使用POJO进行轻量级和最小侵入式开发。
  • 通过依赖注入和接口编程实现松耦合。
  • 通过AOP和默认习惯进行申明式编程。
  • 使用AOP和模板(template)减少模式化代码。

开始写代码吧

  • 此处未使用书中的4.1.6,而是用公司工程中的4.3.7,要跟上时代的节奏啊~
<properties>
        <spring-framework.version>4.3.7.RELEASE</spring-framework.version>
</properties>
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-framework.version}</version>
 </dependency>
  • 引用这一个jar,项目会出现如下:
引用的依赖
  • 一共7个包,这7个包的代码后面再研究。

  • Spring IoC容器(ApplicationContext)负责创建Bean,并通过容器将功能类Bean注入到你需要的Bean中。

声明Bean的注解
  1. @Component:没有明确的角色
  2. @Controller : Spring MVC使用
  3. @Service : service层使用
  4. @Repository :dao层使用
  • 都是声明当前类是Spring管理的一个Bean,4个注解等效。
注入Bean的注解
  1. @Autowired:spring提供的注解
  2. @Inject:JSR-330提供的注解
  3. @Resource:JSR-250提供的注解

依赖注入

  • github代码:
    Spring基础01依赖注入
  • 说明:使用@ComponentScan,自动扫描包名下所有使用@Component、@Controller 、@Service、@Repository的类,并注册为Bean。

Java配置

  • github代码:
    Spring基础02Java配置Bean
  • 说明:此处代码没有使用@Service声明Bean,也没用使用@Autowired注入Bean。
  • 使用@Bean注解声明当前方法FunctionService的返回值是一个Bean, Bean的名称是方法名。
  • 在Spring容器中,只要容器中存在某个Bean,就可以在另外一个Bean的声明方法的参数中注入。

AOP

  • aop:面向切面编程,相对于OOP(面向对象编程)
  • spring支持AspectJ的注解式切面编程
    1. 使用@Aspect声明是一个切面
    2. 使用@After、@before、@Around定义建言(advice),可直接将拦截规则(切点)PointCut作为参数,使用@PointCut定义拦截规则。
    3. 其中符合条件的每一个被拦截处为连接点(JoinPoint)
  • 基于注解拦截能够很好的控制要拦截的粒度和获得更丰富的信息。
<!-- spring aop支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <!-- aspectj支持 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.6</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.5</version>
        </dependency>
  • github代码:
    Spring基础03AOP
  • 代码解释:
    • 注解本身是没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置。注解的功能来自用这个注解的地方。
    • 通过@Aspect注解声明一个切面。
    • 通过@Component让此切面成为Spring容器管理的Bean。
    • 通过@PointCut注解声明切点。
    • 通过@After注解声明一个建言,并使用切点。
    • 通过反射可获得注解上的属性,然后做日志记录相关的操作。
    • 通过@Before注解声明一个建言,此建言直接使用拦截规则作为参数。
    • @EnableAspectJAutoProxy开启Spring对AspectJ的支持。

相关文章

  • 02.Spring基础

    Spring简史: Spring1.x时代:xml配置 Spring2.x时代:注解配置(Jdk1.5引入注解),...

  • 02.Spring Cloud Alibaba

    Spring Cloud Alibaba 概述 2018 年 10 月 31 日的凌晨,这个伟大的日子里,Spri...

  • 机械设备安装技术

    设备基础种类及应用 垫层基础允许产生沉降:大型储罐 浅基础扩展基础联合基础:轧机独立基础 深基础桩基础:适用于需要...

  • 基础,基础,基础

    如果有人现在问我,JAVA该怎么学,我会告诉他不要急于求成,少看视频,多练,多思考。但说到这里有人可能会反...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 零基础学画画从入门到放弃

    零基础应该怎么学画画?零基础那就从基础开始学啊!基础是什么?造型基础和色彩基础。 造型基础就是用点线面组成起码能让...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • 基础基础还是基础

    这次去面试,还是被基础给打趴下了。 对于PHP7的新特性没有了解。 对于TP的新特性没有了解。 再一个就是独立完成...

  • 零基础学UI设计需要美术基础吗?

    零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需...

网友评论

      本文标题:02.Spring基础

      本文链接:https://www.haomeiwen.com/subject/tpcamxtx.html