Spring 基础入门-day03

1.接上面组件扫描常用标注的补充

@Scope("singleton")  指定作用域

程序默认就是单例的,prototype为多例。验证方法:

Card card = app.getBean(Card.class);
Card card2 = app.getBean(Card.class);
System.out.println(card==card2);

返回ture为单例,false为多例!

@PostConstruct 指定初始化方法

要想构造方法起作用必须在构造方法前加上这个标注!

//构造初始化方法
 	@PostConstruct
 	public void init() {
		this.point="A";
	}

@PreDestroy  指定销毁方法

销毁函数,起作用必须加上此标注,且程序的作用域必须是单例的

验证方法必须使用来获取对象,还要记得关闭!!

AbstractApplicationContext app =  new ClassPathXmlApplicationContext("applicationContext.xml");

app.close();

@PreDestroy
 	public void destory() {
		System.out.println("game over");
	}

2 和DI相关的标注

@Value 用来解决基本值的注入问题 如果要注入复杂值 则需要结合EL表达式

              可以用在 成员变量  set方法

@Autowired 用来解决复杂值的装配问题

             可以用在 成员变量  set方法  构造方法

             优先使用类型进行匹配 如果类型有冲突  则启用名字进行装配

             对组件的依赖是强依赖(依赖的组件必须存在 否则报错)

             可以使用required属性指定是false      组件之间变成弱依赖性

             也可以指定set方法参数名字查找需要结合@Qualifier  

@Qualifier   不能用在构造方法上 如果找不到对应的组件 也不会启用类型查找

@Resource 是JavaEE(JDK)规范的标签非Spring框架的;也可以作用于字段或者setter方法;必须要求有匹配的对象;

      找bean的方式:
      1),首先按照set方法的名字去找,如果找到,就使用setter或者字段注入;
      2),如果按照名字找不到,再按照类型去找,但如果找到多个匹配类型,报错;
      3),可以直接使用name属性指定bean的名称;但是,如果指定的name,就只能按照name去找,如果找不到,就不会再按照类型去找;

弄清楚有四个和组件创建相关的标注有3组和组件装配的标注

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值