必威体育Betway必威体育官网
当前位置:首页 > IT技术

Spring中@Configuration的使用

时间:2019-07-21 03:41:03来源:IT技术作者:seo实验室小编阅读:86次「手机版」
 

configuration

一、@configuration的作用类似于配置一个Spring-bean.xml中的<beans></beans>标签的作用,主要用于Bean的注入,放置在类上。使用该注解注入Bean后,获取IOC容器的方式不再使用ClassPathXmlAPPlicationcontext或者文件系统路径来获取对应的IOC容器,而是使用

AnnotationConfigApplicationContext(AnnotationConfiguration.class)的方式来获取IOC容器(AnnotationConfiguration为自定义的配置类)。

1.1 在自定义的配置类中,注入普通的Bean

//Book类代码:
public class Book {
	private String name;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Book()
	{
		System.out.println("Book无参构造器");
	}

	public Book(String name) {
		super();
		this.name = name;
		System.out.println("有参构造器");
	}

	@Override
	public String toString() {
		return "Book-->    [name=" + name + "]";
	}
}






//自定义的配置类
@Configuration
public class AnnotationConfiguration {
	public AnnotationConfiguration() {
		System.out.println("初始化");
	}

    @Bean
	public Book book()
	{
		Book book=new Book();
		book.setName("C++");
		return book;
	}

}




//测试代码:
AnnotationConfigApplicationContext acac=
				new AnnotationConfigApplicationContext(AnnotationConfiguration.class);
		Book book=(Book) acac.getBean("book");
		System.out.println(book);

执行结果:

@Bean注解放置在配置类中的方法上,该Bean的名字和方法名一致,也可以在@Bean(name=[])修改对应的名字,也可以在@Bean注解中使用destroyMethod,initMethod属性值来指定对应的初始化方法和销毁方法

1.2 注入复杂的Bean(一个Bean的属性,为该配置类中的另一个Bean)

@Configuration
@Import(AnotherConfiguration.class)
public class AnnotationConfiguration {
	public AnnotationConfiguration() {
		System.out.println("初始化");
	}
	@Bean
	public Book book()
	{
		Book book=new Book();
		book.setName("C++");
		return book;
	}	
	@Bean
	public Student student(Book book)
	{
		Student student=new Student();
		student.setBook(book);
		return student;
	}	
	
}

其他的代码不再给出(就一个带Book属性值的Student类和测试代码)

重点:若是另一个Bean中需要使用该注解类中的一个Bean,则以方法参数的形式传入,若是方法的参数名与某一个相应Bean的名字相同,则可以直接注入(不管是否有多个类型相同的Bean),若是没有与参数名相同的Bean,则按类型注入(只能有一个该类型的值),当有多个时会出现异常(不止一个)

1.3 可以在类上使用@componentScan(basePackages=[])注解来扫描对应报下的类,若是相应包下的类上使用了@controller,@Service,@Component,@Respository注解,则会将该类放入到IOC容器中管理。

1.4 可以在类上使用@Import(Class)把其他的@Configuration配置类进行合并

1.5 @ImportResource("classpath:applicationContext-configuration.xml"):将xml文件中配置的bean,也引用到配置类中,以便在该配置类中使用xml文件中配置好的bean

相关阅读

关于Spring注解式事务@Transactional的简单描述

一、背景: 目前很多项目的事务处理都是利用Spring的注解式事务实现的(@Transactional)。 在测试事务回滚的过程中发现如下现象: t

spring默认启动位置以及contextConfigLocation设置源

spring默认启动位置以及contextConfigLocation设置源码解析 这几天在看spring的源码,涉及到spring启动位置的部分,下面就看看sprin

史上最全spring注解,没有之一

注解是个好东西,但好东西我们也是看见过,整理过,理解过,用过才知道好。不求我们每

【Spring源码分析】08-DataBinder

DataBinder实现了TypeConverter和PropertyEditorRegistry接口提供了类型转换功能,并且在设置值的同时做Validation。 DataBinder

eclipse运行springboot项目报错‘找不到或无法加载主

这是一个很烦躁的问题~,往往困住大家好长时间,然后各种百度。借此,咱将这个问题有可能产生的原因进行一下总结。若有不完善之处欢迎

分享到:

栏目导航

推荐阅读

热门阅读