Spring Bean配置之注解方式

注解方式相较于XML方式更方便

各有什么优缺点?分别应用于什么场景?

注解的使用:

1、导包

在pom.xml中引入Spring-aop依赖,因为Spring的注解是通过aop来实现的

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>

2、开启注解的包扫描(大大减少applicationContext.xml配置的代码量)

(1)引入命名空间及文件

一个xml要有效的话,有两种方式:①DTD②Scheme

(自动生成的是Scheme的方式)

需要用到context的命名空间(默认是没有的)

故要引入一个新的命名空间以及2个新的Scheme的文件

xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd

可能出现的错误

(正常来说这样是ok的,但是,我出现了Ignored XML validation warning的错误,经过一番查找,于是乎,发现要把上图中最后一行的https改成http才能使注解成功运行。。。目前还不清楚原因)

 (2)编写代码开启

扫描base-package中的所有的注解

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

3、使用注解

(1)@Component:一个组件,用来声明,注解某一个类是个Bean,需要容器来进行管理,相当于Bean的定义

如果没有@Value(注入值方式的注解)的话,account各属性的值就是默认的null或0

一个类被Component注解,是一个普通的Java类

@Component的子注解有以下三种:

@Controller

一个类被其注解,Spring-IoC会把它认为是Servlet,一个控制器

@Repository

一个类被其注解,Spring-IoC会把它认为是DAO层的一个类

@Service

 一个类被其注解,Spring-IoC会把它认为是业务层的一个类

(在面向接口的方式下,注解要写在实体类上,不要写在接口上面)

(2)注入对象的注解

@Autowired:自动注入按类型去搜索,可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

不适合有多种类型的情况

当搜索不到时,它可能把null值放进去

@Resource(name=“accountDAO”):按名称去指定(不写括号中的内容也可以实现)

补充:Spring和junit的test一起使用时可以简化

1、在pom.xml中导入用于测试的包

 2、修改测试类中的代码

加入如下两条注解

用于替换

而原先需要context怎么办呢?

 

解决方法:再次添加注解

即可直接使用accountService,此时可以将 上上图中的语句省去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值