spring工场的实现(又叫ioc容器)
问题:你想让bean工厂帮你new对象,首先要告诉spring bean工厂需要产生什么对象?
第1步:导spring ioc相关的jar包
官网jar包下载地址
第2步:通过配置告诉spring bean工厂生产什么样的bean?
配置方式一:基于xml配置
配置xml的配置文件链接
- BeanFacotry 按需实例化
① getBean(id/name名称)
② getBean(类Class)
③ getBean(id/name,class)
④ getBean(class,构造方法参数)
⑤ getBean(id/name,构造方法参数)
- ApplicationContext 容器启动实例化所有的bean
① ClassPathXmlApplicationContext
② FileSystemXmlApplicationContext
注意:classpath:spring-beans.xml
③ WebApplicationContext 集成 mvc框架
④ 默认spring bean工厂中产生的bean都是单例bean ,可以通过scope属性来修改
例如:
配置方式2:基于注解配置
1、xml+注解配置 (第1步:在xml中开启注解配置)
注意:这里需要额外导入spring-aop的jar包
@Component | 被标示类会被纳入spring ioc容器进行管理,相当于 |
---|---|
@Value | 为spring中所有管理的该类对象注入基本类型和String属性值 |
@Autowired | 为spring中所有管理的该类对象注入引用类型属性值;默认按类型注入,可以通过@Qualifier(“dog2”)指定注入哪个bean,同时也可以通过bean加入 primary=“true” 优先被Autowired注入 |
@Resource | 默认按类型注入,如果指定了name属性,则按bean名称注入 |
例如:
2、java配置+注解配置 (第1步:在配置类中开启注解扫描)
@ComponentScan(“com.cc.config”) 会去com.cc.config扫描@Component @Value @Autowired进行创建bean或注入属性值
配置方式3:基于java的配置(主流)
注意:需要再多导入一个包spring-aop-5.0.14.RELEASE.jar
@Configuration | 指定该类为spring ioc容器配置类,相当于beans.xml文件 |
---|---|
@Bean(name=“user”) | 将方法返回值纳入到spring ioc容器进行管理,相当于 bean |