Java菜鸟学习日记36

监听器
把对象放入对象池(把类注册到对象池)的方法
  1. 使用注解 + <context:component-scan>
    1. @Component:可以标记任何类,没有任何特殊含义
    2. @Controller:标记控制器类,明确地暗示这个类是一个控制器类。Spring对象池本身不在乎对象是什么,对SpeingMVC有作用
    3. @RestController:标记控制器类,每一个请求处理方法自动被标记为@ResonueBody
    4. @Service:标记服务类
    5. Reposilory:标记数据访问类(Dao)
    6. 上面的注解实际都是@Componet,只是名字不同,名字对程序起到暗示作用,而在@Componer本身也是一个记号,用来告诉扫描器,将标记类注册到对象池中。
    7. <component-scan>有子标签,可以决定扫描那些包,排除那些包,从而让注释扫描更精确,速度更快。
    8. 不足之处:使用注解的不足是,获取到的对象仅仅是无参构造方法初始化产生的,其属性并没有我们需要的赋值
  2. 在对象池的配置文件中,详细的描述bean
    1. 通过<bean>标签可以向对象池中添加对象(或对象工厂)
    2. 好处是:可以随意初始化bean对象
      1. 可以调用有参构造方法
      2. 可以通过调用setter给属性赋值
<bean class> = "对象的类"
<constradcr-arg/>
<constradcr-arg/>
</bean>
<bean class="对象的类">
<property name="属性名" value=“属性值”/>
</bean>
如果属性值是其它 bean
<bean class=””>
<property name=” 属性名 ref=“其它bean 名字” />
<property name=” 属性名”>
<ref local=“本对象池中的其它bean 名字” />
<ref parent=” 父对象池中的bean 名字” />
<ref bean=” 其它bean 名字” />
</property>
</bean>
 
如果想给属性值(一个对象)的属性赋值
<bean class=””>
<property name=” 属性名 . 属性名” >
</bean>
如果属性值比较复杂
<bean class=””>
<property name=” 列表属性”>
<list>
<value> 列表项1</value>
<value> 列表项2</value>
</list>
</property>
</bean>
<bean class=””>
<property name=” 集合属性”>
<set>
<value> 列表项1</value>
<value> 列表项2</value>
</set>
</property>
</bean>
 
<bean class=””>
<property name=” 字典属性”>
<entry key=” 名称1” value=” 1” />
<entry>
<key><value>名称2</value></key>
<value> 2</value>
</entry>
<entry>
<key><value>名称3</value></key>
<value> 3</value>
</entry>
</property>
</bean>
// 能够 创建 对象的方法被称为 工厂方法
如果没有公开的构造方法(通过工厂方法创建对象)
<bean class=” 对象的类” factory-method=” 能创建对象的静态方法” />
<bean class=” 对象的类” factory-bean=” 工厂bean”
factory-method=” 能创建对象的实例方法” />
指定 Bean 的作用域
@Scope(“ 作用域名”)
<bean scope=” 作用域名”>
指定 Bean 的名称
不指定名称时,通过类全名生成,如果同一个类有多个bean 则后面加#1 编号
注解指定 @Component(“beanName”)
配置指定 <bean id=”beanName”>
 <bean name=”beanName1, beanName2,…”>
指定别名 <alias name=”beanName” alias=”beanAlias” />
 
在同一个对象池中名字不能重复
指定名称后有利于通过编程方式以   getBean()   方法获取bean
 
获取 Bean
@Autowired     按类类型注入,如果对象池中存在多个本类的对象,则报错
@Qualifier(‘beanName’)    多个对象时,限定取哪一个
@Lazy    懒创建,使用时才创建bean ,有利于减少内存及加快启动速度
默认情况下,对象池创建时,会创建所有的 bean
可以在<beans>根标签上添加 default-lazy-init=”true” 让本对象池整体懒创建
@Resource     按类型
@Resource(“beanName”)     按名字
编程:对象池.getBean();
 
获取 Bean 对象池
Bean 类实现BeanFactoryAware或ApplicationContextAware
 
参与 Bean 的生命周期
注解   @PostConstruct, @PreDestroy …
bean 构造完成后或销毁前会调用@PostConstruct, @PreDestroy 标记的方法
 
接口  InitialzingBean     也可以获得相应的事件,而且还多了一个
afterPropertiesSet()    // 在属性都设置完成后会调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值