原生配置文件引入,
需要用到
@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
引
⼊