Spring学习十一----------Bean的配置之基于Java的容器注解@Bean
© 版权声明:本文为博主原创文章,转载请注明出处
@Bean
-@Bean标识一个用于配置和初始化一个由SpringIOC容器管理的新对象的方法,类似于XML配置文件的<bean/>
-可以在Spring的@Component注解的类中使用@Bean注解任何方法(仅仅是可以)
-在上一点中,通过使用的是@Configuration
实例
1.项目结构
2.pom.xml
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springbean</groupId> <artifactId>Spring-JavaBean</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>Spring-JavaBean Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>4.3.8.RELEASE</spring.version> </properties> <dependencies> <!-- junit依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> <build> <finalName>Spring-JavaBean</finalName> </build> </project>
3.spring-javabean.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="org.spring.javabean"/> </beans>
4.Store.java
package org.spring.javabean; public interface Store { }
5.StringStore.java
package org.spring.javabean; public class StringStore implements Store { public void init() { System.out.println("执行了init方法"); } public void destroy() { System.out.println("执行了destroy方法"); } }
6.StoreConfig.java
package org.spring.javabean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class StoreConfig { @Bean(name="stringStore", initMethod="init", destroyMethod="destroy") public Store stringStore() { return new StringStore(); } }
7.TestBase.java
package org.spring.javabean.test; import org.junit.After; import org.junit.Before; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.util.StringUtils; public class TestBase { private ClassPathXmlApplicationContext context; private String springXmlPath; /** * 无参构造器 */ public TestBase() { } /** * 含参构造器,初始化spring配置文件路径 * * @param springXmlPath * spring配置文件路径 */ public TestBase(String springXmlPath) { this.springXmlPath = springXmlPath; } /** * 初始化加载spring配置文件到IOC容器中 */ @Before public void before() { if(StringUtils.isEmpty(springXmlPath)){ springXmlPath = "classpath:spring-*.xml"; } context = new ClassPathXmlApplicationContext(springXmlPath.split("[,\\s]+")); context.start(); } /** * 销毁IOC容器 */ @After public void after() { if(context != null){ context.destroy(); } } /** * 通过bean ID获取bean对象 * * @param beanId * bean ID * @return */ public Object getBean(String beanId) { return context.getBean(beanId); } }
8.TestSpringJavaBean.java
package org.spring.javabean.test; import org.junit.Test; import org.spring.javabean.Store; public class TestSpringJavaBean extends TestBase { public TestSpringJavaBean() { super("classpath:spring-javabean.xml"); } @Test public void testJavaBean() { Store store = (Store) super.getBean("stringStore"); System.out.println(store.getClass().getName()); } }
9.效果预览
© 版权声明:本文为博主原创文章,转载请注明出处