标签:spring public 002 bean context org import class
spring容器中bean初始化或者销毁时会执行一些方法,有3种实现方式。
1、实现InitializingBean、DisposableBean接口,在bean的属性设置后和bean销毁时分别执行afterPropertiesSet和destroy方法
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.edu.spring</groupId> <artifactId>spring</artifactId> <version>1.0.0</version> <name>spring</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.2.RELEASE</version> </dependency> </dependencies> </project>View Code
Cat.java
package com.edu.spring; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; public class Cat implements InitializingBean,DisposableBean{ @Override public void afterPropertiesSet() throws Exception { // TODO Auto-generated method stub System.out.println("-----------afterPropertiesSet--------------"); } @Override public void destroy() throws Exception { // TODO Auto-generated method stub System.out.println("-----------destroy--------------"); } }View Code
MyConfig.java
package com.edu.spring; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyConfig { @Bean public Cat createCat(){ return new Cat(); } }View Code
App.java
package com.edu.spring; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class App { public static void main( String[] args ) { AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(MyConfig.class); System.out.println(context.getBean(Cat.class)); context.close(); } }View Code
运行结果如下:
2、在@Bean注解中用initMethod和destroyMethod两个属性指定实体类中的两个方法,这两个方法分别在bean初始化和销毁时候执行
Dog.java
package com.edu.spring; public class Dog { public void init(){ System.out.println("----------Dog init---------"); } public void destroy(){ System.out.println("----------Dog destroy---------"); } }View Code
MyConfig.java
package com.edu.spring; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyConfig { @Bean(initMethod="init",destroyMethod="destroy") public Dog createDog(){ return new Dog(); } }View Code
App.java
package com.edu.spring; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class App { public static void main( String[] args ) { AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(MyConfig.class); System.out.println(context.getBean(Dog.class)); context.close(); } }View Code
运行结果如下:
3、在实体类中方法上面分别添加@PostConstruct和@PreDestroy注解,分别指定初始化和销毁方法
Animal.java
package com.edu.spring; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; public class Animal { @PostConstruct public void initial(){ System.out.println("-------initial---------"); } @PreDestroy public void close(){ System.out.println("---------close---------"); } }View Code
MyConfig.java
package com.edu.spring; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyConfig { @Bean public Animal createAniaml(){ return new Animal(); } }View Code
App.java
package com.edu.spring; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class App { public static void main( String[] args ) { AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(MyConfig.class); System.out.println(context.getBean(Animal.class)); context.close(); } }View Code
运行结果如下:
标签:spring,public,002,bean,context,org,import,class 来源: https://www.cnblogs.com/javasl/p/11783018.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。