1.Bean的作用域,其实就是bean采用单例模式还是非单例模式 放在网络编程环境是指bean在http请求的作用范围的过程 !
在java类上加上@Scope注解,可以设置bean的作用范围
package com.oxygen.dao.impl; import com.oxygen.dao.BookDao; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; @Repository("bookDao") @Scope("prototype") public class BookDaoImpl implements BookDao { public void save() { System.out.println("Book Dao Save..."); } }
2.bean的生命周期是指bean的初始化和销毁的过程。 这里自定义了bean的初始化和销毁方法,要用到javax.annotation这个包里的注解。 如果在IntelliJ Idea中发现没有这两个注解,也没法import javax.annotation包时,需要在pom文件中添加javax的依赖。
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency>
示例代码:
package com.oxygen.dao.impl; import com.oxygen.dao.BookDao; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; @Repository("bookDao") @Scope("singleton") 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.."); } }
这个注解@PostConstruct 标记了谁是初始化方法。
这个注解@PreDestroy标记了谁是初始化方法。
加上这两个注解后Spring注解就能执行被它们标记的方法,单@PreDestory标记的方法则需要注意,它不会默认执行。
若需要执行@PreDestroy标记的方法,则需要关闭Spring容器或者关闭钩子(Hook)
ApplicationContext没有关闭容器的方法,我们用AnnotationConfigApplicationContext里面的close方法来关闭容器。
以下展示了关闭容器来调用销毁bean的方法。
AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class); BookDao bookDao= (BookDao) ctx.getBean("bookDao"); bookDao.save(); ctx.close();
标签:生命周期,Spring,bean,javax,public,Bean,import,注解,annotation From: https://www.cnblogs.com/majestyking/p/16817750.html