仿牛客社区学习笔记(一)Spring入门

1.6 Spring IoC课程链接

Spring Ioc

  1. 定义:Inversion of Control,控制反转,面向对象思想
  2. 实现方式:依赖注入

对象

创建

通过new操作符调用构造方法创建对象,每实例化一个对象自动调用一次构造方法

Test test=new Test();
Test test=new Test("a");

访问对象的属性和行为:

对象.类成员

t1.call();

对象的引用:

类名 对象引用名称

​Book book;
Book book=new Book();

一个对象调用另一个对象

Bean

定义

SpringIoC容器的实例化,组装和管理的对象,在web项目中,Spring容器自动创建扫描bean装置到容器中(Spring容器是自动创建的)

SpringIoC的作用:

避免bean之间的耦合,通常对象之间调用方法是new一个A,newB,把a.set()传入B,修改A就要修改B,通过配置文件描述bean之间的关系,自动实例化bean,bean与bean之间不产生关联
在这里插入图片描述

bean被扫描到的条件

  • 在配置类所在包以及子包下
  • 需要有注解

bean用到的注解

  • @Component 都能用
  • @Controller 处理请求
  • @Service 开发业务组件
  • @Repository数据库访问
  • @Autowired依赖注入,加在成员变量之前,set方法之前,构造器之前
  • @Configuration声明配置类
//测试代码与正式环境配置类相同,启用正式类为配置类
@ContextConfiguration(classes = CommunityApplication.class)
  • @Qualified有多个类型的bean,通过名称指定
  • @Bean定义第三方bean,可以装配任意bean
  • @RequestMapping
//浏览器需要访问方法的前提是要有注解声明,声明路径
@RequestMapping("/data")
  • @Primary满足类有两个,添加注解有更高优先级

主动获取Bean

//通过类型获取bean
AlphaDao alphaDao = applicationContext.getBean(AlphaDao.class);
System.out.println(alphaDao.select());

//通过名字获取bean,得到的类型默认返回是object,通过AlphaDao.class强制转型
alphaDao = applicationContext.getBean("alphaHibernate",AlphaDao.class);
System.out.println(alphaDao.select());

依赖注入获取Bean

//以上都是主动获取bean,比较麻烦,更简便的方式为依赖注入
//当前bean要注入AlphaDao
//注入注解:@Autowired,加在成员变量之前,set方法之前,构造器之前
@Autowired
//希望注入的不是默认优先级,而是Hibernate
@Qualifier("alphaHibernate")
private  AlphaDao alphaDao;

Spring管理bean的作用域/有效范围

//被Spring容器管理的bean默认是单例的,只初始化一次,也只销毁一次
//如果不希望单例,希望在每次getBean都新建一个实例;@Scope默认参数“singleton”,通常都是单例
//@Scope("prototype")​

getBean按照类型获取,接口满足的类有多个

@Repository
//getBean按照类型获取,接口满足条件的类有两个,使用注解@Primary bean有更高优先级;
//想把bean替换掉,加一个新的bean,调用的地方依赖的不是bean本身而是接口
// AlphaDao.class——采用面向接口思想,
// 优点:bean变了代码不变,降低bean之间耦合度
// 缺点:一部分用Hibernate的bean,一部分用Mabatis的bean的话:自定义bean的名字,通过名字强制返回bean
// bean默认名字是类名(首字母小写),类名也可以自定义@Respository(“字符串”)
@Primary​

ApplicationContext

​@Override
//哪个类想得到Spring容器,使用接口ApplicationContext
//ApplicationContext是BeanFactory的子接口,功能更强,BeanFactory是Spring容器的顶层接口
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
     //记录Spring容器ApplicationContext,为了后续使用
     this.applicationContext = applicationContext;
}

//测试方法,在方法中使用ApplicationContext容器
@Test
public  void testApplicationContext(){
    System.out.println(applicationContext);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值