本文参考博客:https://blog.csdn.net/u013473691/article/details/52353923
关于@Configuration和@Bean参考博客:https://www.cnblogs.com/soundcode/p/6478004.html
刚开始使用springboot,发现在application启动类所在的包其他的包中写controller没有用,拦截不了url。这是因为springboot默认扫描的的类是在启动类当前的包和下级包,默认端口是8080.我们用springmvc也知道,要用@Controller要有两步:
1.在spring的配置文件中声明Spring-context,如下:
2.然后还需要饮用<component-scan/>元素
<context:component-scan base-package="basePackage"/>
请在<component-scan/>元素中指定控制器类的基本包。请确保所有控制器类都在基本包下,并且不要指定一个太广泛的基本包,因为这样会使得SpringMVC扫描了太多无关的包。
所以我们也要告诉springboot要扫什么包,然后下面就介绍这个@SpringBootApplication注解:
@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan
分别简单介绍下这几个注解:
1.@Configuration:
这个注解加上@Bean注解就可以创建一个简单的spring配置类,可以用来替代相应的配置文件。
@Configuration public class Conf { @Bean public Car car() { Car car = new Car(); car.setWheel(wheel()); return car; } @Bean public Wheel wheel() { return new Wheel(); } }
相当于:
@Configuration的注解类标识这个类可以使用Spring IoC容器作为bean定义的来源。@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。
生成对象的名字默认用@Bean注解的方法名,当然也可以用@Bean注解的name属性来设置
关于@Configuration和@Bean参考博客:https://www.cnblogs.com/soundcode/p/6478004.html
2.@EnableAutoConfiguration:
能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
这个注释会告诉springboot开始添加beans,根据你的classpath设定,你的其他beans还有一些全局变量。
比如说一般构造一个springmvc应用,你会添加一个@EnableWebMvc,但springboot会自动添加他,当他看到classpath有这个Spring-Webmvc,这指明这个应用是个web应用并且会激活关键的东西像分发器servlet——DispatcherServlet。
3.@ComponentScan:
会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。