Spring开源框架基础1.1

  • Post author:
  • Post category:其他




Spring开源框架基础1.1

  1. Spring框架简介:

    Spring是一门为了优化代码而存在的,spring的意义在于更好的应对企业级的开发,极大的方便项目的后期维护、升级和扩展。 Spring的存在使得new Service Dao 得到管理,从而降低代码的耦合性。

  2. Spring框架的特性:

(1)AOP 【面向切面编程】

(2)IOC 【控制反转】

(3)DI 【依赖注入】

(4)非侵入式【在Spring中开发应用的对象可以不依赖Spring的API】


Spring的jar包:


下载路径:https://repo.spring.io/libs-release-local/org/springframework/spring/

部分jar包,详情请到官网查看。


Spring的配置文件.Xml:

<beans xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.springframework.org/schema/beans">


以上代码是固定写法。只需要在创建xml文件时,将以上代码引入即可。如果用到其他拓展的功能,请自行添加,以上代码只是部分常用的功能代码。

  • Junit4的常用注解:
  @BeforeClass	位于所有的常用注解之前,首先执行的就@BeforeClass,但是只会执行一次。
  @Before	位于@Test之前执行,与@BeforeClass不同的是,@Before会在每个@Test之前都会执行一次。
  @Test	测试方法,在这里可以测试期望异常和超时时间 
  @After	位于@Test之后执行,拥有“释放资源”的作用。
  @AfterClass	位于@After之后执行,只执行一次
  @Ignore	作用:将@Test不想运行的代码进行【忽略】

注解执行顺序:

@BeforeClass—-> @Before—>@Test—>@After—>AfterClass

【可忽略@Ignore】



传统XML配置方式

SpringXML配置bean元素相关属性 : 作为 Spring

核心机制的依赖注入,改变了传统的编程习惯,对组件的实例化不再由应用程序完成,转而 交由 Spring

容器完成,在需要时注入应用程序中,从而对组件之间依赖关系进行了解耦。这一切都离不 开 Spring 配置文件中使用的 元素。

Spring 容器可以被看作一个大工厂,而 Spring 容器中的 Bean 就相当于该工厂的产品。如果希望 这个大工厂能够生产和管理

Bean,这时则需要告诉容器需要哪些 Bean,以及需要以何种方式将这些 Bean 装配到一起

private ApplicationContext context=null;

@Before

public void getApplicationContext(){


context = new ClassPathXmlApplicationContext(“applicationContext.xml”);

}

@Test

public void testDemo(){


User user1 = (User) context.getBean(“user01”);

System.out.println(user1);

}


bean 的id 和 name的区别 :


id和name都是spring 容器中bean 的唯一标识符。

1. id: 一个bean的唯一标识 , 命名格式必须符合XML ID属性的命名规范 
2. name: 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3”,用逗号 
或者分号或者空格隔开。如果没有id,则name的第一个名称默认是id 
spring 容器如何处理同名bean?(同名bean:多个bean 有相同的 name 或者 id,称之为同名bean) 
同一个spring配置文件中,bean的 id、name是不能够重复的,否则spring容器启动时会报错。 
如果一个spring容器从多个配置文件中加载配置信息,则多个配置文件中是允许有同名bean的,并 
且后面加载的配置文件的中的bean定义会覆盖前面加载的同名bean。 
1、在spring同一个配置文件中,不能存在id相同的两个bean,否则会报错。 
2、在两个不同的spring配置文件中,可以存在id相同的两个bean,启动时,不会报错。这是因为 
spring 
ioc容器在加载bean的过程中,类DefaultListableBeanFactory会对id相同的bean进行处理:后加 
载的配置文件的bean,覆盖先加载的配置文件的bean。DefaultListableBeanFactory类中,有个属性allowBeanDefinitionOverriding,默认值为true,该值就是用来指定出现两个bean的id相同 
的情况下,如何进行处理。如果该值为false,则不会进行覆盖,而是抛出异常。 
spring 容器如何处理没有指定id、name属性的bean? 
如果 一个 bean 标签未指定 id、name 属性,则 spring容器会给其一个默认的id,值为其类全名。 
如果有多个bean标签未指定 id、name 属性,则spring容器会按照其出现的次序,分别给其指定 id 值 
为 “类全名#1”, “类全名#2”



版权声明:本文为Tomeditation原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。