博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring学习笔记(三)—— 使用注解配置spring
阅读量:5167 次
发布时间:2019-06-13

本文共 1703 字,大约阅读时间需要 5 分钟。

一、使用步骤

1.1 导包

  

 

1.2 为主配置文件引入新的命名空间(约束)

  在applicationContext.xml中引入context约束

  

1.3 编写相关的类

public class UserDaoImpl implements UserDao {    @Override    public void sayHello() {        System.out.println("Hello Spring...");    }}

1.4 配置注解扫描

1.5 在相关类上添加注解

@Component(value="userDao")public class UserDaoImpl implements UserDao {    @Override    public void sayHello() {        System.out.println("Hello Spring...");    }}

1.6 编写测试方法

  @Test    public void demo1() throws Exception {        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");        UserDao userDao = (UserDao) applicationContext.getBean("userDao");        userDao.sayHello();    }

二、Bean管理中常用的注解

2.1 @Component组件

  该组件作用在类上,spring还提供了@Component的三个衍生注解(功能目前来讲是一致的)

  • @Controller  :WEB层
  • @Service           :业务层
  • @Repository      :持久层

  这三个注解是为了让标注类本身的用途清晰。

/** * 将对象注册到容器中 */@Repository("userDao")// @Component(value="userDao")// @Component("userDao")就相当于在xml中配置

2.2 属性注入的注解

【值类型注入】@Value

  • 方式1:通过反射的Field赋值(破坏了封装性)
    @Value("18")private Integer age;
  • 方式2:通过set方法赋值
    @Value("lisi")public void setName(String name) {    this.name = name;}

【引用类型注入】

// @Autowired// 问题:如果匹配多个类型一致的对象,将无法选择具体注入哪一个对象// @Qualifier("car2") //使用@Qualifier注解告诉spring容器自动装配哪个名称的对象@Resource(name="car")private Car car;
  • @Autowired:自动装配,默认按类型进行装配
  • @Qualifier:强制使用名称注入
  • @Resource:手动注入,指定注入哪个名称的对象,相当于@Autowired和@Qualifier一起用

2.3 Bean的作用范围注解@Scope

  @Scope(scopeName="singleton")

  • singleton:单例
  • prototype:多例

2.4 Bean的生命周期配置

  • @PostConstruct:在对象被创建后调用,相当于init-method
  • @PreDestroy:在销毁之前调用,相当于destory-method

三、Bean管理的方式对比

  

  XML和注解:

    • XML:结构清晰
    • 注解:开发方便(属性注入)    

 

转载于:https://www.cnblogs.com/yft-javaNotes/p/10293699.html

你可能感兴趣的文章
qt安装遇到的错误
查看>>
java:Apache Shiro 权限管理
查看>>
objective c的注释规范
查看>>
FreeNas安装配置使用
查看>>
Django(一)框架简介
查看>>
Python操作SQLite数据库的方法详解
查看>>
菜单和工具条(二)
查看>>
hadoop17---RPC和Socket的区别
查看>>
使用JMeter代理录制app测试脚本
查看>>
Linq to Object实现分页获取数据
查看>>
mac常用系统命令
查看>>
android上传文件到服务器
查看>>
我回答了90%的面试题,为什么还被拒?
查看>>
Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
查看>>
HDU 2262 回溯算法 递归枚举
查看>>
九度0J 1374 所有员工年龄排序
查看>>
微信小程序图片使用示例
查看>>
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
查看>>
GitHub 优秀的 Android 开源项目
查看>>
CentOS 网络设置修改
查看>>