初识Spring-IOC

索引、

1、Spring—IOC简介及功能?
2、 来写一个案例(使用配置文件创建对象)
一、使用配置文件来创建对象
二、使用配置文件来给对象的属性赋值(bean装配)。

3、 使用注解来创建对象
4、 其他注解


Spring—IOC简介及功能?

Spring Framework的核心是IoC(Inverstion of Control ,控制反转)容器,IOC容器是一个用于“基于组建的体系结构”的设计模式,它将“判断依赖关系”的职责移交给容器,而不是由组建本身来判断彼此之间的依赖关系。这样依赖就可以大大提高组件的可移植性和可重用性。
简单来说就是使用它来创建对象,实现解耦合。

来写一个案例

一、使用配置文件来创建对象

简单步骤如下:
1、jar包
2、在spring-config.xml 配置(别名applicationContext.xml)
3、获得工厂。获得示例

1、创建一个Spring项目
2、导入jar包
需要的jar包:在这里插入图片描述
在这里插入图片描述
3、在spring-config.xml 配置
在这里插入图片描述
class写 要new的类 id下面说
4、写个测试,获得工厂在这里插入图片描述
①创建一个 ClassPathXmlApplicationContext类 参数写spring-config.xml 路径
②调用getBean方法,来个参数(“userDao”, UserDao.class);参数一:spring-config.xml 里的id 参数二:返回的类对象。
③这里就相当于了 UserDao userDao = new UserdaoImpl(),调用实现类方法hello 就完事了。

二、使用配置文件来给对象的属性赋值(bean装配)。

1、在spring-config.xml 配置

2、不同赋值对象
①直接给属性赋值、使用value:
i:给String或者int赋值
在这里插入图片描述
ii还可以给数组设置
在这里插入图片描述
iii给map类的属性赋值
在这里插入图片描述
iiii 给实体类dog赋值,(先给dog类实体bean赋值)
在这里插入图片描述
iiiii 通过构造器赋值
在这里插入图片描述

②给属性赋一个引用类型的值、使用ref
在这里插入图片描述
ref :映射的类 property name :属性名,对应下面声明的UserDao
在这里插入图片描述
相当于: UserDao userDao =new UserDaoImpl2();

三、 使用注解来创建对象

简单步骤如下:
1、jar包
2、在spring-config.xml 配置扫描范围
3、编写注解
4、获得工厂。获得示例

1、需要再额外添加一个jar包
在这里插入图片描述
2、扫描,路径下的文件才可以使用注解
在这里插入图片描述
3、使用注解创建对象

①在类的头上使用注解

还记得配置文件怎么创建的吗?
在这里插入图片描述写一个test测试:在这里插入图片描述
结果:在这里插入图片描述

有点麻烦!不写id会怎么样?
强大的框架也能正常工作,但是getBean里的id填写谁??
不用担心,IOC给了一个默认id,就是把类名字母小写 作为id
在这里插入图片描述

②给bean装配对象,根据name值查找装配的对象。

在这里插入图片描述指着userdao,按下Alt+Enter 可以看出引用的是
在这里插入图片描述

③给bean装配对象,使用默认值查找装配的对象。

如果不填写name值呢? IOC 会自动查找它的实现类并且装配
如果它存在多个实现类呢??比如有两个,可以在要装配的实现类头上标@Primary
实例:在这里插入图片描述
在这里插入图片描述
测试一下:在这里插入图片描述
结果:在这里插入图片描述
实际开发还可能把@ Resource 拆分成 @ AutoWired 和 @ Qulifier
@ AutoWired
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。
@ Qulifier
用来指定引用实体的id。

其实@Component是所有受Spring 管理组件的通用形式,web、Service、Dao 的@Component不推荐使用

常用注解

①三层架构的创建对象注解

把@Component拆分成3层

①、@Controller对应表现层的Bean,也就是Action,这个注解非常有用,用来声明我们之前经常写的.xxxCenerServlet,待我们学完Spring-mvc框架或者Structs2框架就懂了

②、@Service
@Service对应的是业务层Bean

③、@ Repository
@Repository对应数据访问层
这些注解的作用:https://tomfish88.iteye.com/blog/1497557

bean装配注解

@ Resource
@ AutoWired
@ Qulifier

其他注解

√@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。 √
@Lazy(true) 表示延迟初始化
@Scope注解 作用域 用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
√@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常 √
@PostConstruct 初始化注解
@PreDestroy 摧毁注解
@Async异步方法调用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值