-
IoC容器的编写1
查看全部 -
配置SpringWeb上下文环境,Servlet2.4以上
scope为request表示多例,每次请求都会返回一个新的实例
scope为session表示单例,每次请求都只返回同一个实例
scope为application表示单例,每次请求都只返回同一个实例
<bean id="requestController" class="course1108.video19052.RequestController" scope="request"></bean> <bean id="sessionController" class="course1108.video19052.SessionController" scope="session"></bean> <bean id="applicationController" class="course1108.video19052.ApplicationController" scope="application"></bean>
查看全部 -
通过构造方法和set方法注入
配置文件写法--简便写法
查看全部 -
通过构造方法和set方法注入
配置文件写法1
查看全部 -
注入Bean
查看全部 -
xml中scope参数:
-singleton
spring中如果没有加scope就默认是singleton单例模式
每次向Spring上下文请求该bean,spring都会返回同一个实例,就像下面的bean2,不管请求多少次bean2,bean2只会实例化一次。但是如果是多个context对象去获取,则会实例化多次。实例化的次数根据获取该bena的context的对象个数来决定
<bean id="19051bean2" class="com.imooc.coursescore1108.video19051.Bean2" scope="singleton"></bean>
-prototype
每次向Spring上下文请求该bean,spring都会返回不同的实例,就像下面的bean4,同一个context对象多次请求获取该bean都会返回不同的实例
<!--scope参数表示实例化的类型是单例还是多例,prototype表示多例模式,一个context对象只会实例化一次--> <bean id="19051bean4" class="com.imooc.coursescore1108.video19051.Bean4" scope="prototype"></bean>
思考:下面这种情况,bean3中有属性bean4。bean4是多例,bean3是单例。此时用spring context去请求2次bean3,这2个bean3对象是否相等?
答案是相等的,因为虽然bean4是多例,但是bean3是单例。所以spring只会实例化一次bean3,bean4作为其内部属性也只会被实例化一次,不会因为请求了2次bean3去实例化2次
<bean id="19051bean3" class="com.imooc.coursescore1108.video19051.Bean3"> <property name="bean4" ref="19051bean4" scope="singleton"></property> </bean> <bean id="19051bean4" class="com.imooc.coursescore1108.video19051.Bean4" scope="prototype"></bean>
在bean1是单例,bean2是多例的情况下,通过调用bean1的方法获取不同的bean2
代码改造,下方为更改后的代码
spring配置文件修改:
bean1中加入lookup-method,bean里填beanid
查看全部 -
通过构造方法实例化Bean
通过静态方法实例化Bean
static createBean
通过实例方法实例化Bean
createBean
<bean id="beanFactory" class="com...BeanFactory" />
<bean id="beanFromFactory" factory-bean="beanFactory" factory-method="createBean"/>
查看全部 -
Bean的别名
name 多个以逗号隔开
alias 只能有一个别名
查看全部 -
使用Spring实例化Bean
通过构造方法实例化Bean
通过静态方法实例化Bean
通过实例方法实例化Bean
Bean的别名
查看全部 -
IOC 控制反转
控件对象的创建及销毁(生命周期)
反转:将对象的控制权交给IOC容器
查看全部 -
spring IOC
查看全部 -
setter
constructer
field
list的方式
1.@Bean
2.另类的注入方式,在上下文中,寻找该类型的都注入这个list;这个注入方式比方法1优先级更高
3.如果1,2同时存在,可以用@qualified()指定bean
4.方法2种,可以用@order指定bean的注入list的顺序
map注入
1.@Bean
2.类似list的方法2,会把Map<T>的T类型的bean,自动组成beanId:value的map
@value简单类型的注入
还可以直接注入ApplicationContext,BeanFactory,Environment,ResourceLoader,ApplicationEventPublisher,MessageSource等,因为这些是Spring已经管理的类
查看全部 -
Bean初始化和销毁
1.实现2个接口InitializingfBean,DisposableBean
2.@PostConstruct,@PreDestroy也可
3.@Bean里面有2个属性,initMethod,destroyMethod设置一下/或者<bean>标签配置也可以
AbstractApplicationContext.close()关闭上下文,才会调用销毁
查看全部 -
Bean的作用域
@Scope指定作用域(单例,多例等)
再设置CustomScopeConfigurer
@lookup可通过虚方法注入Bean
查看全部 -
Bean作用域:
1,Singleton作用域
2,prototype作用域
3,Web环境作用域(1,request作用域 2,session作用域 3,application作用域 4,websocket作用域)
4,自定义作用域(SimpleThreadScope作用域)
查看全部
举报