做电商的进货网站,个人可以注册企业邮箱吗,网页设计实验心得,模板网站的域名是什么意思目录 一、注解
元注解
基本注解
启动注解
二、配置
格式介绍
读取配置文件信息
案例演示1 嵌套读取bean信息
案例演示2 读取Map#xff0c;List 以及 Array 类型配置数据
案例演示3 三、总结 一、注解 之前我们了解了SpringBoot基础和AOP简单应用#xff0c;这期来讲…目录 一、注解
元注解
基本注解
启动注解
二、配置
格式介绍
读取配置文件信息
案例演示1 嵌套读取bean信息
案例演示2 读取MapList 以及 Array 类型配置数据
案例演示3 三、总结 一、注解 之前我们了解了SpringBoot基础和AOP简单应用这期来讲讲SpringBoot核心配置和注解 SpringBoot注解就是给代码打上标签的能力。通过引入注解我们可以简单快速赋予代码生命力大大提高代码可读性和扩展性。注解本身不具有任何能力只是一个标签但是我们可以定义各种标签然后实现各种标签处理器来对类、方法、属性甚至参数等进行功能扩展、功能开启、属性定义、行为定义、规则定义、关联处理、元数据定义等等。
元注解
Documented将会在被此注解注解的元素的javadoc文档中列出注解一般都打上这个注解没坏处
Target 注解能被应用的目标元素比如类、方法、属性、参数等等需要仔细思考 Retention 仅在源码保留还是保留到编译后的字节码还是到运行时也去加载超过90%的应用会在运行时去解析注解进行额外的处理所以大部分情况我们都会设置配置为RetentionPolicy.RUNTIME Inherited 如果子类没有定义注解的话能自动从父类获取定义了继承属性的注解比如Spring的Service是没有继承特性的但是Transactional是有继承特性的在OO继承体系中使用Spring注解的时候请特别注意这点理所当然认为注解是能被子类继承的话可能会引起不必要的Bug需要仔细斟酌是否开启继承 Repeatable Java 8引入的特性通过关联注解容器定义可重复注解小小语法糖提高了代码可读性对于元素有多个重复注解其实是很常见的事情比如某方法可以是A角色可以访问也可以是B角色可以访问某方法需要定时任务执行要在A条件执行也需要在B条件执行 Native 是否在.h头文件中生成被标记的字段除非原生程序需要和Java程序交互否则很少会用到这个元注解 基本注解 Service: 注解在类上表示这是一个业务层bean Controller注解在类上表示这是一个控制层bean Repository: 注解在类上表示这是一个数据访问层bean Component 注解在类上表示通用bean value不写默认就是类名首字母小写 Autowired按类型注入.默认属性required tru Resource: 按名称装配。 启动注解 SpringBootApplication 包括以下三个注解 SpringBootConfiguration Configuration JavaConfig的功能配置类结合Bean能够将对象注入到spring的IOC容器。SpringBootConfiguration标注的类是配置类。 EnableAutoConfiguration 开启自动配置。 将spring和第三方库中的对象创建好注入到spring容器避免写xml去掉样例代码。 需要使用的对象由框架提供。 ComponentScan 组件扫描器context:component-scan base-packagexxx包/ 扫描Controller, Service, Repository ,Component注解 创建他们的对象注入到容器 springboot约定:启动类作为扫描包的根起点 二、配置
格式介绍
配置文件有两种格式分别properies 和 yamlyml。 properties 是Java 中的常用的一种配置文件格式文件扩展名为properties。 语法格式是keyvalue。key 是唯一的。 yamlYet Another Markup Language是一种做配置文件的数据格式文件扩展名是yaml 或yml常用 语法格式是key:[空格]值。 YAML 基本语法规则 大小写敏感 使用缩进表示层级关系 缩进只可以使用空格不允许使用Tab 键 缩进的空格数目不重要相同层级的元素左侧对齐即可 #字符表示注释只支持单行注释。#放在注释行的第一个字符 YAML 缩进必须使用空格而且区分大小写建议编写YAML 文件只用小写和空格。 YAML 支持三种数据结构 对象键值对的集合又称为映射mapping/ 哈希hashes / 字典dictionary 数组一组按次序排列的值又称为序列sequence / 列表list 标量scalars单个的、不可再分的值例如数字、字符串、true|false 等 存放路径:src/main/resource目录或者类路径的/config
读取配置文件信息 Spring Boot 同时支持 properties 和 yml 格式的配置文件。配置文件名称默认是 application 。我们可以使用application.properties 、 application.yml。 读取配置文件的key 值注入到Bean 的属性可用ValueValue 一次注入一个key 的值。 将多个key 值绑定到Bean 多个属性可以配合ConfigurationProperties 注解。 在代码中访问属性还可以使用外部化配置的抽象对象Environment。使用Environment 的注入此对象调用它的getProperty(String key)方法即可。 案例演示1 需求在application.properties 提供应用程序的nameowner, port 基本信息程序读取这些数据显示给用户。 步骤1新建maven项目无需添加依赖 步骤2在application.properties 自定义配置项目 步骤3: 创建SomeService 类读取app.name, app.owner,app.port 配置key。 注解Value 读取单个值语法${key:默认值} Service
public class SomeService {Value(${app.name})private String name;Value(${app.owner})private String owner;Value(${app.port:8088})private Integer prot;public void printValue(){//链接字符串StringJoiner joiner new StringJoiner(;);joiner.add(name).add(owner).add(String.valueOf(prot));//打印出字符串String result joiner.toString();System.out.println(result result);}步骤4单元测试 在test 目录下创建测试类注入SomeService 对象调用它的printValue()方法。 嵌套读取bean信息
案例演示2 需求Bean 中包含其他Bean 作为属性将配置文件中的配置项绑定到Bean 以及引用类型的成员。Bean 的定义无特殊要求。 步骤1在resources文件夹下新建 .yml 后缀的文件添加依赖 在 pom.xml 文件里添加以下依赖 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional
/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional
/dependency 步骤2新建pk02包并建立两个类 //DoubBean
Configuration(proxyBeanMethods false)
ConfigurationProperties(prefix app1)
Service
public class DoubBean {private String name;private String owner;private Integer port;private Seri ser;public String getName() {return name;}public void setName(String name) {this.name name;}public String getOwner() {return owner;}public void setOwner(String owner) {this.owner owner;}public Integer getPort() {return port;}public void setPort(Integer port) {this.port port;}public Seri getSer() {return ser;}public void setSer(Seri ser) {this.ser ser;}Overridepublic String toString(){return DoubBean{ \n网站名name\n ,浏览器cookicowner\n ,端口port\n 用户信息ser};}
// Seri
public class Seri {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {this.userpass userpass;}Overridepublic String toString(){return 用户名 username 用户密码: userpass;}} 步骤3添加扫描包和单元测试方法 一定要先去启动类上面添加扫描注解并设置好扫描的包 读取MapList 以及 Array 类型配置数据
案例演示3 MapList 以及 Array 都能提供配置数据 下面通过一个示例配置演示过程 步骤1在刚才的 application.yml 文件接着写入不同类型数据 步骤2添加pk3包新建以下类文件 //Users
public class Users {private String name;private String sex;private Integer age;public String getName() {return name;}public void setName(String name) {this.name name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}Overridepublic String toString(){return MyServer{ name: name \nsex: sex \n age age }\n;}
}
//ConutClass
Data
ConfigurationProperties
public class ConutClass {private ListServers servers;private MapString,Users users;private String [] names;Overridepublic String toString(){return ConutClass{ \n网站服务器:\nservers\n 用户信息列表:\nusers\n 名字列:\nnames\n };}
}//Servers
public class Servers {private String title;private String ip;public String getTitle() {return title;}public void setTitle(String title) {this.title title;}public String getIp() {return ip;}public void setIp(String ip) {this.ip ip;}Overridepublic String toString(){return MyServer{ title: title \nip: ip }\n;}
} 步骤4添加扫描包和测试单元 ConfigurationPropertiesScan注解只能添加一次所以多个扫描包可以用存放在大括号里面用逗号隔开 三、总结 在这篇文章中我们重点关注了常用的注解和Bean的读取和测试。 Spring Boot使用 application.properties 或 application.yml 文件来管理应用程序的配置 SpringBootApplication注解用于开启Spring Boot应用程序的启动类它组合了Configuration、EnableAutoConfiguration和ComponentScan的功能。RestController注解将一个类标记为RESTful API的控制器而RequestMapping注解用于将HTTP请求映射到控制器方法上。 另外依赖注入的注解Autowired它可以自动注入依赖。最后是Bean注解它可以将方法返回的实例注册为Bean并添加到Spring的应用程序上下文中。 本篇内容就到这了如果有好的建议和不妥之处欢迎大家评论区点赞留言转发 文章转载自: http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn http://www.morning.dlrsjc.com.gov.cn.dlrsjc.com http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn http://www.morning.mynbc.cn.gov.cn.mynbc.cn http://www.morning.fpxsd.cn.gov.cn.fpxsd.cn http://www.morning.cjmmn.cn.gov.cn.cjmmn.cn http://www.morning.tyhfz.cn.gov.cn.tyhfz.cn http://www.morning.lgpzq.cn.gov.cn.lgpzq.cn http://www.morning.gmswp.cn.gov.cn.gmswp.cn http://www.morning.qykxj.cn.gov.cn.qykxj.cn http://www.morning.wqrk.cn.gov.cn.wqrk.cn http://www.morning.ghlyy.cn.gov.cn.ghlyy.cn http://www.morning.nstml.cn.gov.cn.nstml.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn http://www.morning.ynstj.cn.gov.cn.ynstj.cn http://www.morning.dyxlj.cn.gov.cn.dyxlj.cn http://www.morning.wckrl.cn.gov.cn.wckrl.cn http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn http://www.morning.xpgwz.cn.gov.cn.xpgwz.cn http://www.morning.c7624.cn.gov.cn.c7624.cn http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn http://www.morning.fnywn.cn.gov.cn.fnywn.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.lbbyx.cn.gov.cn.lbbyx.cn http://www.morning.lfcnj.cn.gov.cn.lfcnj.cn http://www.morning.kjyfq.cn.gov.cn.kjyfq.cn http://www.morning.yldgw.cn.gov.cn.yldgw.cn http://www.morning.xcjbk.cn.gov.cn.xcjbk.cn http://www.morning.wgzzj.cn.gov.cn.wgzzj.cn http://www.morning.dbdmr.cn.gov.cn.dbdmr.cn http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn http://www.morning.syhwc.cn.gov.cn.syhwc.cn http://www.morning.gnyhc.cn.gov.cn.gnyhc.cn http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn http://www.morning.dbsch.cn.gov.cn.dbsch.cn http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn http://www.morning.nnmnz.cn.gov.cn.nnmnz.cn http://www.morning.nrzbq.cn.gov.cn.nrzbq.cn http://www.morning.rhdln.cn.gov.cn.rhdln.cn http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn http://www.morning.mzmqg.cn.gov.cn.mzmqg.cn http://www.morning.ryyjw.cn.gov.cn.ryyjw.cn http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.pqqhl.cn.gov.cn.pqqhl.cn http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn http://www.morning.swbhq.cn.gov.cn.swbhq.cn http://www.morning.pcgmw.cn.gov.cn.pcgmw.cn http://www.morning.cfjyr.cn.gov.cn.cfjyr.cn http://www.morning.deanzhu.com.gov.cn.deanzhu.com http://www.morning.zpdjh.cn.gov.cn.zpdjh.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn http://www.morning.zfqdt.cn.gov.cn.zfqdt.cn http://www.morning.youyouling.cn.gov.cn.youyouling.cn http://www.morning.gnjtg.cn.gov.cn.gnjtg.cn http://www.morning.kxgn.cn.gov.cn.kxgn.cn http://www.morning.rykmz.cn.gov.cn.rykmz.cn http://www.morning.zqmdn.cn.gov.cn.zqmdn.cn http://www.morning.rxkq.cn.gov.cn.rxkq.cn http://www.morning.swbhq.cn.gov.cn.swbhq.cn http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn http://www.morning.dyxlj.cn.gov.cn.dyxlj.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.fxpyt.cn.gov.cn.fxpyt.cn http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn http://www.morning.ttfh.cn.gov.cn.ttfh.cn http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn http://www.morning.qttg.cn.gov.cn.qttg.cn http://www.morning.jgnst.cn.gov.cn.jgnst.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.kzcz.cn.gov.cn.kzcz.cn http://www.morning.hmdyl.cn.gov.cn.hmdyl.cn http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn http://www.morning.rbqlw.cn.gov.cn.rbqlw.cn http://www.morning.c7497.cn.gov.cn.c7497.cn