我们之前使用的Spring的
JavaConfig
原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在Spring4之后的版本, JavaConfig已正式成为Spring的核心功能 。
JavaConfig的核心注解@Configuration
,它的源码如下
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Configuration { @AliasFor(annotation = Component.class) String value() default ""; boolean proxyBeanMethods() default true;}
通过源码我们可以看出:
@Configuration
是元注解,它有很多其他的注解实现,有一个就是@Component
,说明它也会被Spring容器托管,注册到容器中。
@Configuration
代表这是一个配置类,就和Spring的applicationContext.
1、创建Bean
编写一个实体类
@Component // 添加@Component注解,交给Spring托管public class User { private String name; @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
新建一个config包,编写一个AppConfig类
@Configuration // @Configuration表示这是一个配置类public class AppConfig { // 通过方法注册一个bean。 // 方法的返回值就Bean的类型,方法名就是bean的id! @Bean public User getUser(){ return new User(); // 返回要注入到Bean的对象 }}
上面的getUser()方法就相当于
<beans> <bean id="myService" /></beans>
测试
@Testpublic void test01() throws Exception{ // 使用AnnotationConfigApplicationContext获取容器 ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); User user = context.getBean("getUser"); System.out.println(user);}
2、其他配置
2.1、导入其他配置类
@Configuration@Import({WebConfig.class})public class AppConfig { //bean definition...}
它就相当于
<beans> <import resource="WebConfig.
2.2、配置包注解扫描
@Configuration@ComponentScan("com.acme.app.services")public class AppConfig { // various @Bean definitions ...}
它就相当于
<context:component-scan base-package="com.acme.app.services"/>
2.3、其他详细配置
关于javaConfig的方式,详情请见这篇博客:使用JavaConfig形式配置Spring框架,了解一下
关于这种Java类的配置方式,我们在之后的SpringBoot 和 SpringCloud中还会大量看到,我们需要知道这些注解的作用即可!
原文转载:http://www.shaoqun.com/a/512567.html
汇通天下:https://www.ikjzd.com/w/2055
菜鸟网:https://www.ikjzd.com/w/1547
我们之前使用的Spring的JavaConfig原来是Spring的一个子项目,它通过Java类的方式提供Bean的定义信息,在Spring4之后的版本,JavaConfig已正式成为Spring的核心功能。JavaConfig的核心注解@Configuration,它的源码如下@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)
yiqu:yiqu
易佰:易佰
亚马逊欧洲站注册流程及审核事项:亚马逊欧洲站注册流程及审核事项
重大利好!亚马逊在假日购物季提供免费送货服务,非Prime会员也适用!:重大利好!亚马逊在假日购物季提供免费送货服务,非Prime会员也适用!
市值高达9590亿的亚马逊,只是家初创公司?:市值高达9590亿的亚马逊,只是家初创公司?
No comments:
Post a Comment