原生配置文件引入, 
 需要用到 
 @ImportResource  
 注解 
  
          @Import 也可以导入配置文件,但是这个配置文件是【自定义的 
  java 
  类 
   eg 
  : 
  MyConfig 
  】 
  @Import({User.class,Matcher.class})
// 引入 xml配置
@ImportResource("classpath:spring.xml")
 
  (六)配置文件 
 
   
           配置文件类型:  
  
 
   
           1 : 
   application.properties  
  
 
   
           2: 
   application.yaml  
   类型  
  
 
   
           基本语法:  
  
 
   
           1 : 
   key:value  
  
 
   
           2:大小写敏感  
  
 
   
           3:用缩进表示层级关系  
  
 
   
           4:缩进不允许使用 
   tab  
   键 ,只允许使用 
   4 
   个空格  
  
 
   
           5: 
   #  
   代表注释  
  
 
   
           6:字符串不需要加引号  
  
 
   
           自定义配置文件 
   # 配置 端口号
# 优先级更高
server.port=8887
#spring.banner.image.location=classpath:tiao.jpg
#配置项目名称
#server.servlet.context-path=/demo
#配置文件可以自定义的
com.text.name = zhangsan
com.text.age = 18
com.text.sid = 1001
 
    
   
 二、相关注解
 
 (一)创建Bean相关的注解
 
  
  
          (1)@Component :可以使用此注解描述 Spring  
  中的 
   Bean 
  ,但它是一个泛化的概念,仅仅表示一个组件( 
  Bean 
  ),并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可。  
 
 
  
   
           (2)@Repository:用于将数据访问层(DAO 
   层)的类标识为 
    Spring  
   中的 
    Bean 
   ,其功能与 
    @Component  
   相同。  
  
 
   
           (3)@Service:通常作用在业务层(Service  
   层),用于将业务层的类标识为 
    Spring  
   中的 
    Bean 
   ,其功能与@Component 相同。  
  
 
   
           (4)@Controller:通常作用在控制层(如 Struts2  
   的 
    Action 
   、 
   SpringMVC  
   的 
    Controller 
   ),用于将控制层的类标识为Spring 中的 
    Bean 
   ,其功能与 
    @Component  
   相同。  
  
 
   
 (二)Bean生命周期相关的注解 
 
  
          (1)@Scope:注解在类名上,用于指定Bean 
  作用范围,等同于 
  xml 
  文件中配置 
  Bean 
  时使用 
  scope 
  属性。常用值singleton、 
  prototype  
 
 
  
          (2)@PostConstruct:注解在方法上,指定Bean 
  创建时回调方法。相当于 
  xml 
  配置文件中标签中使用 
  init-method 
  属性的功能。  
 
 
  
          (3)@PreDestroy:注解在方法上,指定Bean 
  销毁时回调方法。相当于 
  xml 
  配置文件中标签中使用 
  destroy-method 
  属性的功能。  
 
 
 (三)依赖注入相关的注解 自动装配 
 
  
          (1)@Autowired  
 
 
  
          自动装配:自动装配就是指 Spring  
  容器在不使用 和 标签的情况下,可以自动装( 
  autowire 
  )相互协作的 
   Bean之间的关联关系,将一个 Bean  
  注入其他 
   Bean  
  的 
   Property  
  中。  
 
 
  
          自动装配只需要较少的代码就可以实现依赖注入。但不能自动装配简单数据类型,比如 int 
  、 
  boolean 
  、String 等,相比较显式装配,自动装配不受程序员控制。  
 
 
  
          @Autowired注解可以应用到 
   Bean  
  的属性变量、属性的 
   setter  
  方法、非 
   setter  
  方法及构造函数等,配合对应的注解处理器完成 Bean  
  的自动配置工作。默认按照 
   Bean  
  的类型进行装配。  
 
 
  
          (2)@Resource  
 
 
  
          作用与 Autowired  
  相同,区别在于 
   @Autowired  
  默认按照 
   Bean  
  类型装配,而 
   @Resource  
  默认按照Bean 实例名称进行装配。  
 
 
  
          @Resource 中有两个重要属性: 
  name  
  和 
   type 
  。  
 
 
  
          Spring 将 
   name  
  属性解析为 
   Bean  
  的实例名称, 
  type  
  属性解析为 
   Bean  
  的实例类型。如果指定 
   name属性,则按实例名称进行装配;如果指定 type  
  属性,则按 
   Bean  
  类型进行装配。如果都不指定,则先按Bean 实例名称装配,如果不能匹配,则再按照 
   Bean  
  类型进行装配;如果都无法匹配,则抛出NoSuchBeanDefinitionException 异常。 
 
 
  
   
           (3)@Qualifier  
  
 
   
           与 @Autowired  
   注解配合使用,会将默认的按 
    Bean  
   类型装配修改为按 
    Bean  
   的实例名称装配, 
   Bean的实例名称由 @Qualifier  
   注解的参数指定。  
  
 
   
           (4)@Value  
  
 
   
           @Autowired注入另外的 
   bean 
   ,而 
   @Value 
   注解则是注入值。由于在 
   java 
   源代码中注入常量值会带来硬编码问题,该注解使用较少。 
  
 
   
 (四)Spring MVC常用注解
 
  
  
          (1)@Controller:用于定义控制器类,控制器Controller  
  负责处理由 
  DispatcherServlet 
  分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model  
  ,然后再把该 
  Model  
  返回给对应的 
  View  
  进行展示。  
 
 
  
          (2) @RequestMapping:提供路由信息,负责URL 
  到 
  Controller 
  中的具体函数的映射。  
 
 
  
  (注意:没有指定 
  method 
  属性值 ,那么请求处理方法可以支持 
  HTTP 
  的 
   GET , POST  
  请求方式)  
 
 
         (3)@ResponseBody:控制器方法加上 @ResponseBody注解后,返回值不是页面,而是数据。@ResponseBody注解过的方法,可以返回Map<String, Object>对象,spring mvc会将该对象转换成 json格式的字符串,然后放在响应体中响应给浏览器。(json格式与java对象的相互转换,需要添加jackson依赖 )
 
         (4)@RestController :@Controller和@ResponseBody的合集。 (注:Spring4.0增加的,继承自@Controller) 相当于 @Controller 和 @ResponseBody 
 
         (5)@RequestParam:在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”) 
 
         注解在方法的参数上,指定一个请求参数名,封装到被注解的参数 。一旦有该注解,默认情况,一次请求中,必须要具有该指定的请求参数,否则服务器拒绝该次请求
 
         (6)@PathVariable :将请求URL中的模板变量映射到控制器方法的参数上,即取出uri模板中的变量作为参数。
 
         注解在方法的参数上,先在@RequestMapping中使用{占位符}来定义url ,使用@PathVariable("占位符") 来获取该占位符对应url中的值 封装到方法的参数中
 
         (7)@SessionAttributes:指定request域中共享的数据在session域中共享(特别注意:@SessionAttributes 只能声明在类上,不能声明在方法上!!)
 
         (8)@RequestHeader:用于获取请求消息中的请求头相关数据(/注解在方法的参数上,指定获取对应请求头的值,封装到方法的参数中)
 
  
          (9)@CookieValue:用于获取请求消息中的Cookie的值( 
  注解在方法的参数上,获取指定 
  cookie 
  的值,封装到方法的参数中  
  ) 
 
 
  
   
           (10)@GetMapping:组合注解,是@RequestMapping(method = RequestMethod.GET) 
   的缩写。该注解将限制只接受 
   HTTP GET的请求方式。  
  
 
   
           (11)@PostMapping:组合注解,是@RequestMapping(method = RequestMethod.POST) 
   的缩写。该注解将限制只接受HTTP POST的请求方式。 
  
 
   
 (五)元注解 
 
  
          元注解是 
  专门用来注解其他注解的注解 
  ,听起来有些绕口,实际上就是专门为自定义注解提供的注解。java.lang.annotation提供了四种元注解:  
 
 
  
          l @Documented – 注解是否将包含在 
  JavaDoc 
  中  
 
 
  
          l @Retention – 什么时候使⽤该注解(SOURCE:仅存在于源代码中;CLASS:在 
  class字节码文件中存在;RUNTIME:运行时) 
 
 
  
          l @Target – 注解用于什么地方  
 
 
  
          l @Inherited – 是否允许子类继承该注解  
 
 
  
          l @Repeatable - 是否可重复注解, 
  jdk1.8 
  引 
  ⼊