spring 的IoC注解的配置信息

Posted mudi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 的IoC注解的配置信息相关的知识,希望对你有一定的参考价值。

Spring的注解Ioc的配置

注解一共分为四类:

1.创建对象

2.注入数据

3.改变作用范围

4.和生命周期相关

1.创建对象

xml方式创建对象

相对于xml配置就是:<bean id=" " class=" "></bean>

id 为要创建对象的唯一标识

class 对象的全限定类名

注解创建创建对象

@component() 组件的意思

作用:把当前类的对象存入IoC容器中(写在要创建的对象的类上面)

参数: value 指定获取bean对象时的id, 当不指定的时候,就会默认为当前类的名字,首字母小写

由此注解衍生出的三个注解

  • @Controller @Service @Repository

    表现层 业务层 持久层

  • 他们三个是spring框架为我们提供更强语义化的注解,可以让开发者通过注解即知道是哪一层的类。但是没有要求必须对应使用(体现了封装继承的思想)

2.注入数据

xml方式:使用set注入或者构造函数注入

使用set注入时候就要set方法。构造函数注入的时候就要构造函数

<property name="" value="" || ref="" ></property>

注解注入:

就是给成员方法注入值

@Autowried 会自动的按照类型注入,如果没有找到匹配的类型,那么就会报错,(报什么错看required的属性),如果有唯一的一个类型匹配,那么就注入成功,如果有多个匹配时,还会使用变量名称作为bean的id,在匹配的类型对象列表中,根据id获取,如果能找到依然可以注入成功。找不到就报错。

属性:

required:是否必须注入成功。默认值是true,表示必须注入成功。通常情况下都是取默认值

细节:使用注解注入时,set方法和构造函数就不是必须的了。

@Qualifier

作用:在自动按照类型注入的基础之上,再按照bean的id注入。在给类的成员注入时,不能独立使用。(在junit和spring整合的时候就会单独的用到 Qualifier)

属性:

value:用于指定bean的id。

@Resource

作用:直接使用bean的id来注入。

属性:

name:用于指定bean的id。

@Value:

作用:用于指定基本类型或者String类型的数据。它通常的作用都是用于读取properties文件中的配置

需要借助spring的el表达式。写法:${key} 读取的就是properties文件的value

属性:

value:用于指定数据内容

对于表达式的理解:

表达式的作用:为了取数据

第一、我们要知道表达式写在什么位置,不同的位置代表的含义不一样

第二、去哪里取数据

3.用于改变作用范围的

xml配置改变作用的范围:

bean标签的scope属性

scope:指定对象的作用范围。

singleton :默认值,单例的.

prototype :多例的.

request :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中.

session :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中.

global session :WEB 项目中,应用在 Portlet 环境.如果没有 Portlet 环境,那么globalSession 相当于 session.

注解配置:

@scope

作用:用于指定当前bean的作用范围

属性:

value:用于指定作用范围的值。

取值和xml配置时是一模一样的。

同上……

 

4.和生命周期有关的注解

和生命周期相关的

  • 相当于xml配置就是:bean标签的init-method和destory-method属性

  • @PostConstruct

    作用:用于指定初始化方法

  • @PreDestroy

    作用:用于指定销毁方法

 

5.spring的配置类

@Bean:

  • 作用:把当前方法的返回值放入spring的ioc容器

  • 属性:

    name:用于指定bean的id。默认值是当前方法名称。它和value属性的作用是一样的

    @ComponentScan

  • 作用:用于指定要扫描的包

  • 属性:

    value:用于指定要扫描的包。和basePackages的作用相同。

    @Configuration

  • 作用:表明当前类是spring的一个配置类。

    如果该类作为字节码参数传给了AnnotationConfigApplicationContext,则不用写此注解

    @Import

  • 作用:导入其他的配置类

  • 属性:

    value:用于指定要导入类的字节码

    @PropertyResource

  • **作用:**用于指定properties文件的位置

  • 属性:

    value:用于指定properties文件的位置

    classPath:位置

 

 

总结:在使用注解和xml配置spring的时候要搭配的使用,不能一味的用哪个来解决配置的问题,

实际的开发的过程中:哪个方便就直接使用哪个,或者公司要求哪个技术就直接用哪个。

xml和代码是分开的,查找的时候,还是要配置文件,

注解和代码是在一起的,方便观看,但是注解是写在类中的,如果要修改类的时候,我们就要重新修改注解的配置,比较麻烦。

 

改造的步骤:

1.在配置文件中配置要扫描的包

2.用注解的方式创建容器中的对象 注解方式的配置不需要set方法

用到注解 创建对象的注解,和 数据注入的注解

3.删除配置文件中创建对象的部分

我们只改变的是配置方面的代码,对于业务的代码就不会去修改,

我们使用IoC的主要的目的就是为了解耦,把创建对象的方式,交给spring来操作。

 

 

以上是关于spring 的IoC注解的配置信息的主要内容,如果未能解决你的问题,请参考以下文章

spring 的IoC注解的配置信息

Spring框架-使用注解实现IOC的配置

Spring-01 注解实现IOC

Spring基础:注解方式创建对象IOC

Spring IOC 系列:基于Java Code 配置Spring Container

Spring注解驱动开发