Spring - 6 Spring框架中Bean管理的常用注解 与 Bean的作用范围和生命周期的注解

124 篇文章 1 订阅
96 篇文章 0 订阅

 

  • Component组件

之前用的用在类上的注解@Component用在什么位置都可以,不过spring也提供了相对MVC三层的衍生注解,效果是一样的只是便于理解。

        * @Controller        -- 作用在WEB层
        * @Service            -- 作用在业务层
        * @Repository        -- 作用在持久层

  • 属性注入的注解

        * 如果是注入的普通类型,可以使用value注解
            * @Value            -- 用于注入普通类型
        
        * 如果注入的是对象类型,使用如下注解
            * @Autowired        -- 默认按类型进行自动装配
        * 如果想按名称注入
            * @Qualifier    -- 强制使用名称注入
        
        * @Resource                -- 相当于@Autowired和@Qualifier一起使用
            * 强调:Java提供的注解
            * 属性使用name属性

代码如下

package demo;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)//整合junit需要的注解
@ContextConfiguration("classpath:applicationContext.xml")//加载配置文件的注解(一个测试类只需要加载一次即可)
public class IOCDemo {
	
	//提供注入需要的成员变量,使用注解不必提供setter函数
	@Resource(name="userService")//bean中注解的名字
	private UserService us;
	
	@Value(value="alex")//注入普通类型
	private String name;
	@Test
	public void demo3() {
		System.out.println(name);
	}
	
	
	
	/*
	 * 自动装配,找到该成员变量的实现类并自动注入,
	 * 如果有多个实现类就不能单独使用了,
	 * 需要加上@Qualifier来指定名称
	 */
	@Autowired 
	@Qualifier(value="userService")
	private UserService us2;
	@Test
	public void demo4() {
		us2.usDemo1();
	}
	
	/*
	 * #使用java自带的@Resource注解只需要提供name属性就可以和	
	 * #@Autowired @Qualifier(value="userService")同样效果。
	 */
	@Resource(name="userService")
	private UserService us3;
	@Test
	public void demo5() {
		us3.usDemo1();
	}
	
}

 

 

  • Bean的作用范围和生命周期的注解

    更详细的可以参考 https://blog.csdn.net/elim168/article/details/75581612

    1. Bean的作用范围注解
        * 注解为@Scope(value="prototype"),作用在类上。值如下:
            * singleton        -- 单例,默认值
            * prototype        -- 多例
    
    2. Bean的生命周期的配置
        * 注解如下:
            * @PostConstruct    -- 相当于init-method
            * @PreDestroy        -- 相当于destroy-method

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值