初学Spring框架day02 2017-11-02

来源:互联网 发布:网络犯罪调查第二季 编辑:程序博客网 时间:2024/06/07 05:47

吐舌头微笑疑问

今天来学习:

1)Spring框架的DI(依赖注入)中的构造方法注入

2)Spring框架配置文件 parent与abstract标签

3)Spring框架中的自动注入

4)Spring中的注解

一 、

Spring框架的DI(依赖注入)中的构造方法注入

一、构造方法注入:
             1)顾名思义构造方法注入就是一构造方法的形式进行创建对象,并且给对象赋值。
            2)除此之外需要注意的是:
构造方法注入需要提供构造方法,构造方法参数数量和配置文件=注入的从参数要保持一致(不然会报错:Could not resolve matching constructor)

例如 :

配置文件

<bean id="" class=""><construct-arg inbdex="0"></construct-arg></bean>

二、Spring框架配置文件 parent与abstract标签

   XML配置文件 : parent:指示注入类的父类是谁,以便延续父类注入。(父类和子类不能同时用构造注入)

abstract:为true时候 ,不让Spring容器在内存中创建对象(通俗的可以这么理解)

三、Spring框架中的自动注入

 自定义属性的对象进行注入:

自定义属性的注入是依赖于set方法的。

由两种方式:在Spring配置文件中的bean标签添加一autowire标签。

1 Autowire=”buType” 当创建spring容器的时候会加载其配置文件,然后加载每一个bean标签,当发现bean标签中有autowire属性值为byType,会到bean中找class所对应的属性,并根据此类型作为注入对象的类型。

2 Autowire=“byName”当创建spring容器的时候会加载其配置文件,然后加载每一个bean标签,当发现bean标签中有autowire属性值为byName,会找到bean的class遍历所有的set的方法,并去掉set,取剩下的内容作为注入对象的内容

  3.2)通过注解实现自动注入(导入约束文件)

  需要手动添加约束文件context

1@autowired

在启动spring注解功能后,在需要注入的自定义对象上添加此注解。

原理:在创建spring容器时候,会加载配置文件,并发现注解功能开启后,会在创建对象的时候会获取所有的属性,并寻找此标签的属性名作为ID寻找对象,如果找到则注入,找不到则以此属性名的类型作为依据进行注入

注意:如果配置文件中存在多个相同的bean,在通过注解进行自动注入的时候,如果id找不到 类型也会报如下错误

2@Qulifier(“id”)

使用此注解会强行按其内的值作为ID去进行匹配

3@Resource

增强型注入:因为集合前两种注解的功能

四、Spring中的注解

  首先需要开启包扫描:多个包通过逗号隔开


   @Component注解

   如果一个类需要spring容器管理,则在此类上加此注解,当类名首字母小写作为所创建对象的ID

原理:类注解的实现原理:当加载Spring容器的时候加载了配置文件 如果配置中开启了包扫描,则会到指定的包下面获取所有的Class,如果Class声明的时候添加Component注解 则把此类添加到Spring容器中进行管理,类型即为当前扫描到的类型,id为类名首字母小写,如果在类中的属性出现了Autowire或者Resource说明需要进行属性值的注入 ,注入之后对象就创建成功

1、 ID的生成策略

   依据类名的第二个字母,如果第二个字母大写,则首字母不变,如果第二个字母小写则首字母小写

 

2 、高级注解

@Scope( “prototype”)控制单例多例

@Lazy懒加载

@PostConstruct初始化方法的注解

@PreDestory销毁对象的注解

3 、 程序架构分层的注解

@Repository pojo包下面的类

@ServiceService包下面的类

@ControllerServlet

五 、属性中基本数据类型的注入与复杂类型的注入

  1 基本类型

   通过@value(“注入值”)注解进行

2复杂类型

  需要在配置文件中添加util约束

例如

<util:map id=”map”>

<entry></entry>

</util:map>

  代码中注解

@value(“#{@map}”)

六、properties文件的读取

      1. 创建文件,把文件放在src的根目录

2. 配置文件中进行配置,指向properties文件所在路径

  <context:property-placeholder location=”classpath:xx.properties”/>

3. 通过$在代码中进行注入

 @Value(“${name}”)