Spring框架IOC用到的注解

本篇文章是我在学习了Spring的课程之后总结而得。

课程链接:https://www.bilibili.com/video/av47952931

目录

一 . 用于生成bean对象并将bean对象存入IOC容器中的注解。

二. 用于注入数据的注解(比如给类属性赋值)

三.  生成配置类的注解和使用配置类生成bean对象的注解。  

四. Spring整合Junit的注解。


前言:

1. IOC容器是Map结构的,因此将bean对象存入IOC容器中要有对应的键值对:key=value。下面所说的beanId就是其中的key。

2. 注解是有属性名和属性值的,写在注解括号中(    @Component(value="beanId")   ),类似键值对:key=value,当属性名是value时,可以省略该属性名(  @Component("beanId")   )

一 . 用于生成bean对象并将bean对象存入IOC容器中的注解。

1.  @Component("key")  :

     作用:写在类名之前,程序运行时会生成一个当前类的对象作为IOC容器中的bean对象。

     @Service("key")  @Repository(value="key")  @Controller("key")  :

     作用:与@Component作用完全一样,只是为了划分三层架构,@Service用在业务逻辑层(service层),@Repository用在数据                 访问层(dao层),@Controller用在表现层(view层)。

@Service(value = "accountService")
public class AccountServiceImpl implements IAccountService {
}

二. 用于注入数据的注解(比如给类属性赋值)

1. @AutoWired

    作用:自动按照类型进行注入,即在IOC容器中根据类型进行匹配。

    示例:如下图。

    注解:首先在IOC容器中找到与变量的数据类型(AccountDaoImpl)相同的bean对象,然后用该bean对象给当前的变量赋值。

               如何匹配到多个同类型的bean对象,则把变量名(accountDao)作为beanId进行查找,如果找不到则报错。如下图。

2. @Qualifier

    作用:跟@AutoWired连用,根据数据类型+beanId在IOC容器中进行匹配,匹配成功则注入数据。

    说明:使用@Autowired是根据数据类型+变量名称在IOC容器中进行匹配,@Autowired是把变量名称作为beanId进行匹配,                    而@Qualifier则可以手动指定beanId。

    示例:如下图。

 

3.  @Resource

     作用:按照beanId注入。可以独立使用。

     属性:

             name : 用于指定beanId。

     示例:如下图。

4. @Value

   作用:用于向基本数据类型和String类型的变量(属性)注入数据。

   属性:

           value:用于指定变量的值。可以使用spring中的EL表达式。

    示例:如下图。

注意:对集合类型的数据只能使用XML配置文件进行配置。

三.  生成配置类的注解和使用配置类生成bean对象的注解。  

第一部分我们讲到了用@Component来生成bean对象并且存入IOC容器中,我们是通过在自己定义的类上加@Component注解来实现的。

但是有时候我们的bean对象可能来自某个jar包中的类,因为我们无法在jar包中使用@Component来生成bean对象,所以这里引入配置类。

1.  @Configuration

     作用:指定当前类是配置类。

2. @Bean

     作用:把当前方法的返回值作为bean对象存入IOC容器中。

     属性:

             name:用于指定当前bean的beanId。默认值是方法名称。

             value:和name功能一模一样,只是别名而已,所以我们可以省略属性名。

3. @ComponentScan

     作用:用于指定在创建IOC容器时要扫描的包。如果包中有类加了注解@Component则生成一个bean对象存入IOC容器中。

     属性:

             value:指定包名。属性值是一个数组,使用{package1,package2,......,package}可以指定多个包。

             basePackages:是value的别名,功能一模一样。所以属性名可以省略。

@Configuration、@ComponentScan和@Bean的示例:如下图。

4. @Import

    作用:用于导入其他的配置类。导入的类不需要使用注解@Configuration来表示自己是个配置类。

5. @PropertySource

    作用:用于导入properties文件。

四. Spring整合Junit的注解。

1. @RunWith

    作用:Junit提供的一个注解,把原有的main方法替换成spring提供的main方法。

2. @ContextConfiguration

    作用:告诉Spring的运行器,Spring的IOC容器创建时是基于XML文件还是配置类。

    属性:

            locations :  指定xml文件的位置。

            classes:指定注解类的位置。

注意:当我们使用Spring5.x版本时要求Junit的jar包必须是4.12以及以上版本。

3. 示例如图。

 

     

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值