Java方式bean的注入以及自动配置

Java配置

Java配置的本质上,就是使用一个Java类去代替xml配置,这种配置方式在目前最主流的Spring Boot中得到了广泛的使用。
1、引入相关Spring相关依赖
相关依赖
2、创建Java配置类:

/**
 * 这是一个Java配置类,它的作用类似于applicationContext.xml配置文件
 * @author 叶小陌
 *
 */
@Configuration
public class JavaConfig {
	/**
	 * 返回一个JavaBean的方法就类似于applicationContext.xml中的一个bean标签
	 * <bean class="com.sxt.bean.Book" id="book"/>
	 * @return
	 * 默认情况下,id就是方法名,可以通过@bean注解的value或者name属性自定义方法名
	 */
	@Bean(name="book")
	public Book getBook(){
		return new Book();
	}
}

3、加载Java配置

public class Main1 {

	ApplicationContext ac;
	@Test
	public void test() {
		Book book = (Book) ac.getBean(Book.class);
		System.out.println(book);
	}
	@Before
	public void before(){
		ac = new AnnotationConfigApplicationContext(JavaConfig.class);
	}
}

自动配置

xml 配置实现
xml配置,主要通过四个注解,这四个注解,目前来说,功能是一样的:

  • @Component,一般用在身份不明确的组件上
  • @Service,一般用在Service层
  • @controller,一般用在控制层
  • @Repository,一般用在数据库访问层

然后在xml文件中配置自动扫描:

<context:component-scan base-package="com.sxt.bean"/>

如果有多个包需要扫描,多个包使用“,”隔开,也可以直接配置扫描父包。
还可以配置扫描某个注解,如下:

<context:component-scan base-package="com.sxt" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    </context:component-scan>

use-default-filters表示使用使用spring默认提供的过滤器,false表示不使用,true则表示使用。
一般来说,true结合exclude-filter标签使用,表示除去某个注解
false结合include标签使用,表示包含某个注解
注意:Component是另外三个注解(Service、Controller、Repository)的父类。

Java配置实现
Java配置和xml配置基本一致,唯一不同的地方就是包扫描的方式。
四个注解是一样的。
包扫描是通过@ComponentScan来实现:

@Configuration
@ComponentScan("com.sxt.bean")
public class JavaConfig {	
}

Java配置一样可以实现精确的包扫描:

@Configuration
@ComponentScan(value="com.sxt.bean",useDefaultFilters=false,includeFilters={
		@ComponentScan.Filter(type=FilterType.ANNOTATION,value=Service.class)
})
public class JavaConfig {	
}

猜你喜欢

转载自blog.csdn.net/LOYE_YOU/article/details/89356938