Bean管理
Bean作用范围
public class App{public static void main( String[] args ){ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDaoImpl bookDao1 = ctx.getBean(BookDaoImpl.class);BookDaoImpl bookDao2 = ctx.getBean(BookDaoImpl.class);System.out.println(bookDao1);System.out.println(bookDao2);}}
打印出来俩个Bean是同一个对象(单例)
com.chentianyu.service.impl.BookDaoImpl@75f9eccccom.chentianyu.service.impl.BookDaoImpl@75f9eccc
变成非单例对象(@Scope)
package com.chentianyu.Dao.impl;import com.chentianyu.service.BookDao;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Repository;@Repository@Scope("prototype") //singleton:单例 ; prototype:非单例public class BookDaoImpl implements BookDao {}
com.chentianyu.Dao.impl.BookDaoImpl@75f9eccccom.chentianyu.Dao.impl.BookDaoImpl@52aa2946
Bean生命周期
自定义的生命周期名称叫什么都可以
@Repository@Scope("singleton") //singleton:单例 ; prototype:非单例public class BookDaoImpl implements BookDao {public void save(){System.out.println("book dao save...");}@PostConstruct //构造方法后public void init(){System.out.println("book dao init...");}@PreDestroy //在彻底销毁之前public void destroy(){System.out.println("book dao destroy...");}}
输出的是
book dao init...com.chentianyu.service.impl.BookDaoImpl@568bf312com.chentianyu.service.impl.BookDaoImpl@568bf312
要进行销毁的方式(一种就是关闭容器的方式来做)
public class App{public static void main( String[] args ){AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDaoImpl bookDao1 = ctx.getBean(BookDaoImpl.class);BookDaoImpl bookDao2 = ctx.getBean(BookDaoImpl.class);System.out.println(bookDao1);System.out.println(bookDao2);ctx.close();}}
book dao init...com.chentianyu.Dao.impl.BookDaoImpl@568bf312com.chentianyu.Dao.impl.BookDaoImpl@568bf312book dao destroy...
总结
- bean作用范围
- @Scope
- bean的生命周期
- @PostConstruct (构造方法后)
- @PreDestroy (销毁前)
