征服Spring

Spring 的 Bean 管理(注解方式)

2019-06-18  本文已影响7人  希希里之海

Spring 的 Bean 管理(注解方式)

1. 导入必要的 jar 包和 xml 文件

xmlns:context="http://www.springframework.org/schema/context"

2. 使用注解定义 Bean

Spring2. 5 引入使用注解去定义 Bean。

除了 @Component 外,Spring 提供了 3 个功能基本和 @Component 等效的注解

这三个注解是为了让标注类本身的用途清晰,Spring 在后继版本会对其增强。

举个例子:

@Repository("userDao")
public class UserDao {

    public void save() {
        System.out.println("Dao 中保存用户。。。");
    }

}

具体代码:SpringDemo1.demo1()


3. Spring 的属性注入 -- 注解方式

A. 使用@Autowired 进行自动注入
B. 使用 @Qualifier 指定注入 Bean 的名称
// 必须同时使用
@Autowired
@Qualifier  //按照名称来注入

举个例子:

@Component("userService")
public class UserService {
    // 直接使用注解,不用另外写setter和getter方法
    @Value("米饭")
    private String something;

    //自动注入UserDao类
    @Autowired
    //使用名称注入
    @Qualifier("userDao")
    private UserDao userDao;

    public void eat() {
        System.out.println("eat:" + something);
    }

    public void save() {
        System.out.println("Service 中保存用户。。。");
        userDao.save();
    }

}

具体代码:SpringDemo1.demo2() 和 SpringDemo1.demo3()

C. @Resource 进行属性注入

简单来说:

@Resource = @Autowired + @Qualifier

举个例子:

@Component("userService")
public class UserService {

    @Resource(name = "userDao")
    private UserDao userDao;

    public void save() {
        System.out.println("Service 中保存用户。。。");
        userDao.save();
    }

}

具体代码:SpringDemo1().demo3()

D. 总结
@Autowired
@Qualifier("Beanname")
或
@Resource(name = "Beanname")

4. Spring 的其他注解

Spring 初始化 bean 或销毁 bean 时,有时需要作一些处理工作,因此 spring 可以在创建和拆卸 bean 的时候调用 bean 的两个生命周期方法。

xml 的配置如下:

<bean id="foo" class="...Foo" init-method="setup" destory=method="teardown" />

转换为注解方式:

举个例子:

@Component("bean1")
public class Bean1 {

    @PostConstruct
    public void init() {
        System.out.println("initBean...");
    }

    public void say() {
        System.out.println("say...");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("destroyBean...");
    }
}

具体代码:SpringDemo2.demo1()


5. Bean 的作用范围

举个例子:

@Component("bean2")
@Scope("prototype")
public class Bean2 {
    //....
}

具体代码:SpringDemo2.demo2()


6. 传统 XML 配置和注解配置混合使用

XML 方式的优势

结构清晰,易于阅读

注解方式的优势

开发便捷,属性注入方便

XML 与注解的整合开发
  1. 引入 context 命名空间
xmlns:context="http://www.springframework.org/schema/context"
  1. 在配置文件中添加 context:annotation-config 标签
<context:annotation-config />

PS:

具体代码:SpringDemo3.demo1()

上一篇下一篇

猜你喜欢

热点阅读