spring ioc
Posted anjunshuang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring ioc相关的知识,希望对你有一定的参考价值。
spring注入的三种匹配方式:byType、byName、constructor
基于注解的自动装配
[email protected]
通过@Autowired标注成员变量时不要有set方法
@Autowired默认是按byType进行匹配的,如果需要按照byName进行需要,需要结合@Qualifier使用:例如@Qualifier("userDao1")
[email protected]
@Resource默认按byName进行模式自动注入,可以标注成员变量和set方法上,但无法标注构造函数。
@Resource有两个重要的属性,name和type,name解析为bean的名字,type解析为bean的类型
使用name则按照byName模式进行注入
使用type则按照byType模式进行注入
不指定则通过反射技术默认按照byName进行注入
//@Autowired标注成员变量
@Autowired
@Qualifier("userDao")
private UserDao userDao;
//上述代码等价于@Resource
@Resource(name=“userDao”)
private UserDao userDao;//用于成员变量
//也可以用于set方法标注
@Resource(name=“userDao”)
public void setUserDao(UserDao userDao) {
this.userDao= userDao;
}
[email protected]
解决简单值的注入,解决硬编码问题
一般@Value会与properties文件结合使用
4.为什么实际工作中我们不用在xml中配置若干bean
***************************************************************************************************************************************
***1.上述的Bean对象声明使用都在xml内声明手动声明的方式,一旦Bean对象多起来,管理Bean可能会发生繁琐的情况,为此Spring提供了基于Java注解的配置方式***
***2.有了注解声明,我们就不需要在xml中声明以上两个Bean,但需要明确告诉Spring注解的Bean在那些包下,因此需要添加包扫描机制,
*****此时需要启用Spring的context命名空间:
***************************************************************************************************************************************
@Service和@Repository等于@Component 相同效果
@Component与@Service的含义并无差异
@Repository在表示数据访问层含义的同时还能够启用与Spring数据访问相关链的其他功能
@Repository 用于对DAO实现类进行标注
@Service 用于对Service实现类进行标注
@Controller 用于对Controller实现类进行标注(web层控制器)
Bean实例化方法,一般采用构造方法,其次还有静态方法构造和实例工厂方法构造。
但早期无论是采用默认的构造方法还是带参数的构造方法,都是xml文件对属性进行赋值
@Scope("prototype"):声明作用域,默认是singleton
以上是关于spring ioc的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot脚手架项目002-004.Spring IOC_权限管理系统_Spring:什么是IOCSpring Bean注入SpringBean的注解bean的加载流程
Springday02 jabcTemplate注解IOC创建对象注解IOC注入注解 IO生命周期纯注解IOCSpring-junitAOP-JDK和CGLIB动态代理