(四):springboot的注解有哪些注解
springboot的优点就是简化配置,,没有了xml,基本都是一个配置(application.properties)+注解来实现springboot的构建
那么都有哪些注解咧?说一下我在工作中常用的注解
1:##@SpringBootApplication
标识该类为SpringBoot项目启动类。并且让SpringBoot自动给程序进行必要的配置,等同于@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解.
(1):@SpringBootConfiguration表示的是该类会作为Springboot的一个配置类,
(2):@EnableAutoConfiguration表示开启自动配置功能,里面也实现了自动配置原理
@Configuration会把组件会装配到实体类上封装为一个bean,AutoConfigurationImportSelector的selectImports()这个方法,找到所有JavaConfig自动配置类的全限定名对应的class,然后将所有自动配置类加载到Spring容器中。bean有了,配置有了,相当于对象也有了,这就是自动配置.
(3):@ComponentScan用来将包加入SpringIOC的包扫描,
2: @RestController 和@Controller
@RestController相当于@Controller+@ResponseBody,
@RestController加在类上面的注解,使得类里面的每个方法都将json/xml返回数据加返回到前台页面中。
比如return "abc" 前端会展示abc三个字母
@Controller加在类上面的注解,使得类里面的每个方法都返回一个视图页面。
比如return "abc" 前端会展示静态资源中的的abc.html里面的内容
3: @component和@configuration
虽然Component注解也会当做配置类,但是并不会为其生成CGLIB代理Class,所以在生成Driver对象时和生成Car对象时调用car()方法执行了两次new操作,所以是不同的对象。当时Configuration注解时,生成当前对象的子类Class,并对方法拦截,第二次调用car()方法时直接从BeanFactory之中获取对象,所以得到的是同一个对象。
4: @Autowired 与@Resource
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用
@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。