Spring的@Autowire 简单使用
程序员文章站
2022-06-26 17:21:18
Spring的@Autowire 简单使用首先准备好类Friend / Hello/ SpringConfigerpackage com.lin.HowMuch.Bean;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Component;/*@Component@Scope("singleton")*/public class Friend { @O...
Spring的@Autowire 简单使用
首先准备好类Friend / Hello/ SpringConfiger
package com.lin.HowMuch.Bean;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/*
@Component
@Scope("singleton")*/
public class Friend {
@Override
public String toString() {
return super.toString();
}
}
package com.lin.HowMuch.Bean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Hello {
private Friend friend;
/**
* @Autowired 先byType然后再byName
*
* 这里的@Autowired先byType然后再byName 当IOC容器只有一个对应的属性的时候,两个参数拿到的对象是相同的(单例模式的时候)
* singleton:
* friend:com.lin.HowMuch.Bean.Friend@6ac13091
* friend1:com.lin.HowMuch.Bean.Friend@6ac13091
* prototype:
* friend:com.lin.HowMuch.Bean.Friend@2b6faea6
* friend1:com.lin.HowMuch.Bean.Friend@778d1062
*
* 然后在SpringConfiger.class 里面手动注入两个Bean 取消Friend 的自动注入
* 1:让@Bean里面的 BeanName 分别和参数一致
* 结果如下:
* friend:com.lin.HowMuch.Bean.Friend@5ae50ce6
* friend1:com.lin.HowMuch.Bean.Friend@6f96c77
* 2.让@Bean里面的 BeanName 分别和参数不一致
* 结果如下:
* single matching bean but found 2
* 此时可以完全验证@Autowired的注入方式是先byType然后再byName
*
* **************************************************************
* 注意: @Autowired 在的地方为注入点,Spring根据注入点扫描是否实行依赖注入(所以说方法的名字无关) 但我们一般使用命名的规范原则见名知意
* 只有一个Bean的时候就没有ByName的事情了,但是多例的时候得到的是不同的实例化对象。
* 在属性上面的注入依靠的是反射的暴力注入不经过注入方法,IOC容器只有一个对应属性的Bean则忽略属性的名字,有两个的时候再依靠名字注入
* @param friend
* @param friend1
*/
@Autowired
public void riend(Friend friend,Friend friend1) {
System.out.println("friend:"+friend);
System.out.println("friend1:"+friend1);
this.friend = friend;
}
@Override
public String toString() {
return super.toString()+" ======>> "+friend.toString();
}
}
package com.lin.HowMuch.Configer;
import com.lin.HowMuch.Bean.Friend;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "com.lin.HowMuch.Bean")
public class SpringConfiger {
@Bean
public Friend friend(){
return new Friend();
}
@Bean
public Friend friend1(){
return new Friend();
}
}
package com.lin.HowMuch.Test;
import com.lin.HowMuch.Bean.Hello;
import com.lin.HowMuch.Configer.SpringConfiger;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
@org.junit.Test
public void f(){
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiger.class);
Hello hello = ac.getBean("hello", Hello.class);
System.out.println(hello);
}
}
本文地址:https://blog.csdn.net/weixin_45099317/article/details/110502579
上一篇: 军事中语音识别技术的应用
推荐阅读
-
荐 使用IDEA搭建一个简单的JavaWeb图书管理项目(详细步骤指导、提供源码)
-
记一次java简单的if语句使用多态重构
-
浅谈Spring中@Import注解的作用和使用
-
玩B站有没有简单实用的工具 哔哩哔哩(bilibili)助手使用图文教程
-
使用Python编写vim插件的简单示例
-
php在数据库抽象层简单使用PDO的方法
-
解析iOS应用的UI开发中懒加载和xib的简单使用方法
-
在Python的Flask框架下使用sqlalchemy库的简单教程
-
腾讯防水墙(滑动验证码)的简单使用 https://007.qq.com
-
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解