Java菜鸟学习日记36
来源:互联网 发布:施工组织设计软件 编辑:程序博客网 时间:2024/06/14 07:21
监听器
把对象放入对象池(把类注册到对象池)的方法
- 使用注解 + <context:component-scan>
- @Component:可以标记任何类,没有任何特殊含义
- @Controller:标记控制器类,明确地暗示这个类是一个控制器类。Spring对象池本身不在乎对象是什么,对SpeingMVC有作用
- @RestController:标记控制器类,每一个请求处理方法自动被标记为@ResonueBody
- @Service:标记服务类
- Reposilory:标记数据访问类(Dao)
- 上面的注解实际都是@Componet,只是名字不同,名字对程序起到暗示作用,而在@Componer本身也是一个记号,用来告诉扫描器,将标记类注册到对象池中。
- <component-scan>有子标签,可以决定扫描那些包,排除那些包,从而让注释扫描更精确,速度更快。
- 不足之处:使用注解的不足是,获取到的对象仅仅是无参构造方法初始化产生的,其属性并没有我们需要的赋值
- 在对象池的配置文件中,详细的描述bean
- 通过<bean>标签可以向对象池中添加对象(或对象工厂)
- 好处是:可以随意初始化bean对象
- 可以调用有参构造方法
- 可以通过调用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() // 在属性都设置完成后会调用
阅读全文
0 0
- Java菜鸟学习日记36
- Java菜鸟学习日记1
- Java菜鸟学习日记2
- Java菜鸟学习日记3
- Java菜鸟学习日记4
- Java菜鸟学习日记5
- Java菜鸟学习日记6
- Java菜鸟学习日记7
- Java菜鸟学习日记8
- Java菜鸟学习日记9
- Java菜鸟学习日记10
- Java菜鸟学习日记11
- Java菜鸟学习日记12
- Java菜鸟学习日记13
- Java菜鸟学习日记14
- Java菜鸟学习日记15
- Java菜鸟学习日记16
- Java菜鸟学习日记17
- Background execution not allowed:
- 链式物理结构(动态分配节点)
- 数据结构——顺序表
- SurfaceView相关概念的整理
- Java Web自定义MVC框架
- Java菜鸟学习日记36
- IntelliJ IDEA 当pom.xml更新时,自动加载pom.xml
- java乱码问题处理
- 华为OJ python实现
- (CVTE 笔试题)已知一个数组,不使用除法构造另一数组。
- 如何从零开始学Java
- mysql 5.7 开启半同步复制
- 在RT-Thread上使用龙芯1c库中的硬件I2C接口
- [Java-Jdk]--OpenJDK和SunJDK的区别