一、使用步骤

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 配置注解扫描

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
<!-- 指定扫描cn.itcast.dao包下的所有类中的注解.
注意:扫描包时,会扫描指定包下的所有子孙包
-->
<context:component-scan base-package="cn.itcast.dao"></context:component-scan>
</beans>

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中配置<bean name="userDao" class="cn.itcast.dao.impl.UserDaoImpl")
public class UserDaoImpl implements UserDao {

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:结构清晰
    • 注解:开发方便(属性注入)    

最新文章

  1. JFreeChart 使用一 饼图之高级特性
  2. js实现移动端无限加载分页
  3. Qt5 多显示器获取不同显示器的分辨率和位置的方法
  4. oauth与openid
  5. Docker 运维高级应用管理
  6. mysqlslap 压力测试使用总结
  7. 为什么java的类是单继承的,接口是多继承的
  8. PAT甲级 1129. Recommendation System (25)
  9. node 循序渐进
  10. mysql优化---笔记
  11. vue轮播图
  12. 每一次要fix的pr
  13. BZOJ1879_Bill的挑战_KEY
  14. Kubernetes-ELK
  15. docker基本命令日志
  16. 将Apache2.4手动安装成Windows的服务
  17. tomcat启动后服务访问404
  18. python绘制圆和椭圆
  19. LOJ#2302. 「NOI2017」整数
  20. Qt编写串口通信程序全程图文讲解 .

热门文章

  1. 201671010140. 2016-2017-2 《Java程序设计》java学习第二周
  2. mongo_1 新手之路
  3. WebFlux03 SpringBoot WebFlux实现CRUD
  4. 公共技术点之 Java 反射 Reflection
  5. blockchain notes
  6. Luogu 3261 [JLOI2015]城池攻占
  7. 认识HttpContext.User
  8. Arduino I2C + DS1307实时时钟
  9. 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)
  10. windows环境下安装ZooKeeper