九、使用java的方式配置Spring
接下来完全不适用Spring的xml配置,全权交给Java来做。
javaConfig
是Spring
的一个子项目,在Spring4之后,它成为了一个核心功能。
实体类:
package com.hxl.pojo; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; //这里的这个注解的意思是说明这个类被Spring接管了,注册到了容器中 @Component public class User { private String name; public String getName() { return name; } //属性注入值 @Value("王木木") public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
配置类:
package com.hxl.config; import com.hxl.pojo.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; //这个也会被Spring容器托管,注册到容器中,因为他本身就是一个@Component //@Configuration代表这是一个Spring配置类,就和我们之前看的beans.xml是一样的 @Configuration /* 也可以通过下面的方式进行扫描包 */ @ComponentScan("com.hxl.pojo") public class WmmConfig { /*注册一个bean,就相当于我们之前写的一个bean标签。 这个方法的名字,就相当于bean标签的id属性 这个方法的返回值,就相当于bean标签的class属性 */ @Bean public User user(){ return new User();//返回要注入到bean的对象 } }
下面加入了@Import。将两个配置类合并成一个
package com.hxl.config; import com.hxl.pojo.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; //这个也会被Spring容器托管,注册到容器中,因为他本身就是一个@Component //@Configuration代表这是一个Spring配置类,就和我们之前看的beans.xml是一样的 @Configuration /* 也可以通过下面的方式进行扫描包 @ComponentScan("com.hxl.pojo") */ //将两个配置类搞成一个 @Import(WmmConfig.class) public class WmmConfig2 { /*注册一个bean,就相当于我们之前写的一个bean标签。 这个方法的名字,就相当于bean标签的id属性 这个方法的返回值,就相当于bean标签的class属性 */ @Bean public User user(){ return new User();//返回要注入到bean的对象 } }
测试类:
import com.hxl.config.WmmConfig; import com.hxl.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class MyTest { public static void main(String[] args) { //如果完全使用了配置类方式去做,我们就只能通过AnnotationConfigApplicationContext上下文来获取容器,通过配置类的class对象加载 ApplicationContext context = new AnnotationConfigApplicationContext(WmmConfig.class); User getUser = (User) context.getBean("user"); System.out.println(getUser.getName()); } }
这种纯java的配置方式,在SpringBoot中随处可见