Spring Bean的配置(注解方式使用Spring Bean)

4 篇文章 0 订阅

说明:本文展示的代码和例子是承接我的上一个 使用XML方式配置Spring Bean的文章。所以在阅读本文的时候,如果遇到的例子您无法理解,请移步阅读上文。


使用注解方式配置Spring Bean

注:示例项目创建于IDEA编译器,使用Java语言,maven框架

1、引入Spring-aop依赖

Spring的注解是通过aop的方式实现的所以我们需要在pom.xml文件中加入Spring-aop的依赖,加入方式大致如下:

在您的pom.xml文件中加入下面的代码

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
<!--      这些依赖的版本需要相同-->
      <version>5.2.4.RELEASE</version>
    </dependency>
  </dependencies>

2、开启注解的包扫描

需要用到一个Context的命名空间,IDEA创建的maven项目是默认没有的。我们需要到spring官网上找到,百度搜索spring,进入spring的官网。在网页上方的功能栏里找到project => Sping Framework
在这里插入图片描述
点击Core technologies
在这里插入图片描述
需要自带查询功能的浏览器,在查询栏中输入xmlns:context关键字

在这里插入图片描述
找到以下三段代码加入到xml文件中
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

</beans>

(注意:最后两段不是直接插入,是在最后面的 "> 符号之前插入,看看插入后最后面是否有 ">
在这里插入图片描述


为什么需要添加这几个文件?

  • xml是可扩展的标记语言,如果不加约束,你即使写错标签名、并且符合xml规则,那么xml是不会提示错误的,那么有可能解析不到内容.xml主要有两种约束技术:DTD和Schema.
  • 我们的示例使用的是Schema方式。上面添加的文件就是用来规定我们怎么写xml。就比如我们一开始通过原有的文件,可以在xml文件中写bean,实际上怎样写bean就是文件所规定好的,使用规定的方式写该文件,我们才不容易出现错误,因为xml是不会提示错误的。

在xml文件中写入配置的方式

在刚刚添加的代码的后面加入以下代码,写法如下:

<context:component-scan base-package="包名"/>

<!--例子-->
<context:component-scan base-package="org.csu.spring.demo.ioc"/>

包名就是你需要使用注解的包,spring框架会扫描该包下的所有注解。


3、使用注解

在需要创建的对象的类中添加@Component注解

假如我需要容器帮我创建Account对象,我只需要在定义这个对象的类上写上@Component(“account”)
在这里插入图片描述
获取这个对象

 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
 Account account = (Account) context.getBean("account");

获取对象的方式是跟xml方式一样的,都是先初始化Spring的环境,工厂创建好对象放进容器,最后用户使用Spring的容器获取对象。

给对象附上初始值的方式
在这里插入图片描述
在需要赋值的属性上使用@Value注解,就可以给上初始值


给对象的内部类赋初值

1、假设我需要一个有初始值的accountService对象,有两种使用注解的方式,第一个是使用**@Autowired**
在这里插入图片描述
Autowired是自动注入的方式,可以自己识别类中属性的类型。但是缺点就是,它是按类型注入,可能会存在一些问题。比如我们需要给accountDAO对象注入初始值,在注入的时候,框架会找到需要扫描的包下,类型为AccountDAO的类,注入该对象。如果这个类型的类,有多个的话,这样的方法就不行。可能还存在一个问题,如果想要注入的对象没有写它的类的话,就是可能会把null值给放进对象中,比如我想accountDAO对象注入值,但是代码中没有AccountDAO类。

2、@Resource

在pom.xml文件中导入Resource注解依赖
在这里插入图片描述
注入的初始参数的写法如下:
在这里插入图片描述
Resource标签是按照名称注入,框架会在外面找到bean中跟你写的name的相同名字,再把它注入进去
在这里插入图片描述


Spring-IoC的常用的注解

  • @Component
    下面三个注解都可以说是Componect的子类,使用Component注解的就是一个普通Java类。

(下面三个注解对应的是MVC框架的三种类,虽然都是类,只是更加特殊)

  • @Controller(被它注解Spring框架会认为这个类是一个控制器)
  • @Respository(DAO层的类)
  • @Service(业务层的类)
  • @Value(给类中属性注入初始值)
  • @Resource(给类中的内部类注入初始值)

一个自动创建spring环境的小技巧

每次在我们使用Junit测试框架创建的类是否成功的时候,每次都需要加上

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Account account = (Account) context.getBean("account");

从而才能获取spring环境,这样比较麻烦,我们可以在pom.xml文件中加入新的依赖包(Spring和Junit联动的专门用于测试代码的包),让框架帮我们完成这个操作,自动初始化spring环境。

在pom.xml文件中加入下面的代码

在这里插入图片描述
在需要测试的类名上面加入这两段代码
在这里插入图片描述

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")

第一个注解是告诉框架你需要它帮你来创建spring环境进行测试,其中的 .class 就是xml文件的位置,需要我们把位置赋给它
第二个注解classpath就是在根目录下找到applicationContext.xml文件把位置赋值给它(注意:这个文件名是自己取的,根据实际xml文件的名字进行修改)


以后要使用类的话,就不需要先初始化Spring和获取bean容器,再获得类了。直接把需要使用的类创建出来再通过@Autowired把它自动注入进去就可以使用,例如下图:

在这里插入图片描述


注意:使用这种方式必须要Junit是4.12或者更高的版本
在这里插入图片描述
如果出现上述情况,在pom.xml文件中把Junit的版本改成4.12或更高版本即可。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值