完全注解开发的意思就是不使用xml配置文件,之前我们可以用使用注解方式替代xml配置文件方式完成很多事情,但是还是要在配置文件中开启组件扫描,现在我们创建一个配置类来完全代替配置文件,在配置类中完成开启组件扫描的操作。
创建配置类,替代xml配置文件
@Configuration: 把当前类作为配置类,替代xml配置文件
SpringConfig类:
package com.Keafmd.spring5.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** * Keafmd * * @ClassName: SpringConfig * @Description: Spring配置类 * @author: 牛哄哄的柯南 * @date: 2021-01-17 17:04 */ @Configuration //把当前类作为配置类,替代xml配置文件 @ComponentScan(basePackages = {"com.Keafmd"}) // 替代配置文件中的<context:component-scan base-package="com.Keafmd"></context:component-scan> public class SpringConfig { }
测试类
测试类:
package com.Keafmd.spring5.testdemo; import com.Keafmd.spring5.config.SpringConfig; import com.Keafmd.spring5.service.UserService; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Keafmd * * @ClassName: TestSpring5Demo1 * @Description: 测试类 * @author: 牛哄哄的柯南 * @date: 2021-01-17 13:03 */ public class TestSpring5Demo1 { @Test public void testService(){ //使用配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService",UserService.class); System.out.println(userService); userService.add(); } @Test public void testService2(){ // 加载配置类 ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserService userService = context.getBean("userService",UserService.class); System.out.println(userService); userService.add(); } }
两种测试输出结果相同:
com.Keafmd.spring5.service.UserService@7ce3cb8e name:Keafmd service add...... dao add ... Process finished with exit code 0
这样我们就通过实用配置类的方式完全替代了配置文件,从而达到完全注解开发。