Autowired与 Resource的区别
1、Autowired与Resource都是要装配bean
Autowired是通过byType来注入 Resource是同通过byName来注入
Autowired
Autowired默认是按类型(type也就是参数化类型)装配(这个注解是属于spring的),默认情况下Autowired要求依赖对象必须存在,如果想要允许他空值也就是null 可以设置它的required属性为false 格式为:@Autowired(required=false),如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired` `()` `@Qualifier` `(` `"baseDao"` `)``private` `BaseDao baseDao;
Resource
@Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。用这个注解是因为不用写set方法,减少与spring的耦合
Value
@Value(“${}”):value的格式
value注解的作用是将我们配置文件的属性读出来
Builder
builder它的作用就是在你使用的地方生成一个构造器与this方法
this就是区分全局与形参 然后this就是选择比较远的那个也就是全局
有参构造与无参构造
-
构造方法的使用是用类名 构造函数也是与类名相同
-
也就是说构造就是跟类名相同的方法或者函数
-
还有就是如果类中没有构造函数那么你的类自带一个无参构造
-
构造函数不能有返回值g
-
有参构造就是有参数也就是有值的构造方法或者构造函数
-
无参构造就是没有参数也就是没有值的构造方法或者构造函数
启动类注解
@SpringBootApplication
启动类为什么叫这个名字就是因为 springboot框架后面加的是你的默认的配置类 application也就是程序的入口
启动类的8个注解就是为了扫描你的所有包就是所有的Bean就是容器 因为类默认有Bean
自动装配原理
byType(类型)通过类型来扫描bean
byName(名称) 通过名称来扫描bean
constructor(构造器)通过构造来扫描bean 包括构造函数与构造方法
基于注解的自动装配有三种
@Autowired @Resource @Value
CrossOrigin
这个注解是用于前后端联调时在controller中使用
-
在@RequesMapping注解上面使用作用就是在
-
这个注解中可以使用它的所有的源与http 它的底层中有俩个重要的参数
-
在这个注解中有俩个重要的参数一个是orgins是允许访问的域的地址
-
另一个是maxAge是缓存持续的最大时间(单位是秒)
Target与Retention
-
@Target为注释类型的程序元素的种类
-
@Retention为注释类的生命周期
-
很多注解自带这俩个注释如启动类与,RequestMapping
-
这俩个注解都拥有生命周期:java源文件(java文件)-->class文件--->内存中的字节码
-
定义注解需要使用@interface 并在接口上面注明@Rentention或者Targe也可以把spring的注解加上再使用
@RequestMapping
-
表示共享映射,如果没有指定的请求方式,将接受GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT所有的HTTP请求方式。
-
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping 都是HTTP方法特有的快捷方式@RequestMapping的变体,分别对应具体的HTTP请求方式的映射注解,如果没有指定请求方式这个注解可以包含所有的请求方式。
-
你还可以在你的controller上写请求方式注解括号中method(method是参数)写请求方式RequestMethod.GET)
@Repository
-
@Repository和@Controller、@Service、@Component的作用差不多,都是把对象交给spring管理。@Repository用在持久层的接口上,这个注解是将接口的一个实现类交给spring管理。
-
这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
springboot自动装配
-
@SpringBootConfiguration继承自©Configuration,二者功能也一致,标注当前类是配置类,并会将当前 类内声明的一个或多个以@Bean注解标记的方法的实例纳入到Spring容器中,并且实例名就是方法名。
-
@EnableAutoConfiguration借助@lmport的支持,收集和注册特定场景相关的bean 定义。也是借助@lmport的帮助,将所有符合自动配置条件的bean定义加载到loC 容器中来
-
@ComponentScan这个注解在Spring中很重要,它的功能其实就是自动扫描并加载符合条件的组件
-
@Documented是元注解,可以修饰其他注解。许多注解头部都有
@Documented注解 -
@Inherited是一个标识,用来修饰注解作用:如果一个类用上了@Inherited修饰的注解,那么其子类也会继承这个注解
-
剩下俩个注解在第九题
自动装配原理:
springboot启动时,是依靠启动类的main方法来进行启动的,而main方法中执行的是SpringApplication.run()方法,而SpringApplication.run()方法中会创建spring的容器,并且刷新容器。而在刷新容器的时候就会去解析启动类,然后就会去解析启动类上的@SpringBootApplication注解,而这个注解是个复合注解,这个注解中有一个@EnableAutoConfiguration注解,这个注解就是开启自动配置,这个注解中又有@Import注解引入了一个AutoConfigurationImportSelector这个类,这个类会进过一些核心方法,然后去扫描我们所有jar包下的META-INF下的spring.factories文件,而从这个配置文件中取找key为EnableAutoConfiguration类的全路径的值下面的所有配置都加载,这些配置里面都是有条件注解的,然后这些条件注解会根据你当前的项目依赖的pom以及是否配置了符合这些条件注解的配置来进行装载的。
-
启动类要跟你的包同级
1万+





