【Spring】配置bean的三种方式

目录

  1. maven依赖
  2. XML配置
  3. Java Config 配置
  4. 隐式地bean发现机制和自动装配
  5. xml与java混合使用

正文

需要添加maven依赖

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <!--这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心 -->
      <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <!--这个jar文件为Spring核心提供了大量扩展 -->
      <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <!--对JUNIT等测试框架的简单封装 -->
      <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <!--为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。-->
      <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <!--这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行(IoC/DI)操作相关的所有类 -->
      <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <!--这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。 -->
      <version>4.1.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

DemoBean.java

package entity;
import java.io.Serializable;

public class DemoBean implements Serializable {
	private static final long serialVersionUID = 1L;
	String demo;

	public DemoBean(){
	}

	public void init() {
		System.out.println("init"); 
	}
	
	public void destroy() {
		System.out.println("destroy"); 
	}
	
	public String getDemo() {
		return demo;
	}

	public void setDemo(String demo) {
		this.demo = demo;
	}

	@Override
	public String toString() {
		return "DemoBean [demo=" + demo + "]";
	}
}

XML配置

applicationContext.xml

<bean id="demo" class="entity.DemoBean" init-method="init"
		destroy-method="destroy" scope="prototype"></bean>

XmlTest.java

public class XmlTest {
	
	ClassPathXmlApplicationContext ctx;
	@Before
	public void init() {
		ctx = new ClassPathXmlApplicationContext("spring-mvc.xml");
	}
	@After
	public void destroy() {
		ctx.close();
	}
	
	@Test
	public void test01() {
		DemoBean db = ctx.getBean("demo",DemoBean.class);
		System.out.println(db);
	}
}

Java Config 配置

配置类

@Configuration
public class JavaConfig {
	
	@Bean(name= {"ConfigBean"})
	public JavaConfigBean getBean() {
		return new JavaConfigBean();
	}
}

测试类

public void test01() {
	AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfigBean.class);
	JavaConfigBean bean = context.getBean(JavaConfigBean.class);
	bean.desc();
	context.close();
}

隐式地bean发现机制和自动装配(Annotation 配置)

配置类添加注解扫描

@Configuration
@ComponentScan(basePackages="entity")//使用String是类型不安全的,建议用class
//@ComponentScan(basePackageClasses= {JavaConfigBean.class})	//默认会扫描与配置类相同的包
public class JavaConfig {

}

测试类(使用Spring test包的测试)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=JavaConfig.class)
//JavaConfig中使用xml的配置文件
//@ImportResource(locations={"classpath:applicationContext.xml"})	
public class AnnotationTest {
	
	@Autowired
	AnnotationBean annotationBean ;//测试注解配置
	
	@Autowired
	JavaConfigBean javaConfigBean;//测试java config 配置
	
	@Test
	public void test01() {
		assertNotNull(annotationBean);
		annotationBean.desc();
	}
	
	@Test
	public void test02() {
		javaConfigBean.desc();
	}
}

在Java配置中使用其他配置文件

导入xml配置文件
@ImportResource(locations={"classpath:applicationContext.xml"})
导入Java配置文件
@Import(OtherConfig.class)

在xml中使用其他配置

导入xml配置文件

<import resource="other.xml"/>

导入Java配置文件

<bean class="config.JavaConfig"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值