当前位置: 首页 > news >正文

杭州网站建设是什么学编程课对孩子有什么好处

杭州网站建设是什么,学编程课对孩子有什么好处,班级优化大师下载安装,婚纱摄影网站模板下载文章目录 容器功能--注解Spring 注入组件的注解Component、Controller、Service、Repository案例演示 Configuration应用实例传统方式应用实例使用SpringBoot 的Configuration 添加/注入组件 Configuration 注意事项和细节 Import应用实例 ConditionalConditional 介绍应用实例… 文章目录 容器功能--注解Spring 注入组件的注解Component、Controller、Service、Repository案例演示 Configuration应用实例传统方式应用实例使用SpringBoot 的Configuration 添加/注入组件 Configuration 注意事项和细节 Import应用实例 ConditionalConditional 介绍应用实例 ImportResourceImportResource 应用实例 配置绑定应用实例注意事项和细节 容器功能–注解 Spring 注入组件的注解 Component、Controller、Service、Repository 说明: 这些在Spring 中的传统注解仍然有效通过这些注解可以给容器注入组件 案例演示 创建quickstart\src\main\java\com\nlc\springboot\bean\A.java 其他的就不做演示了 在quickstart\src\main\java\com\nlc\springboot\MainApp.java 获取, 完成测试 Configuration 应用实例 传统方式应用实例 说明: 演示在SpringBoot, 如何通过Configuration 创建配置类来注入组件 回顾传统方式如何通过配置文件注入组件 1.创建quickstart\src\main\java\com\nlc\springboot\bean\Monster.java public class Monster {private Integer id;private String name;private Integer age;private String skill;public Monster(Integer id, String name, Integer age, String skill) {this.id id;this.name name;this.age age;this.skill skill;}public Monster() {}public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getSkill() {return skill;}public void setSkill(String skill) {this.skill skill;}Overridepublic String toString() {return Monster{ id id , name name \ , age age , skill skill \ };} }创建quickstart\src\main\resources\beans.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd!--配置了Monster bean--bean idmonster03 classcom.nlc.springboot.bean.Monsterproperty namename value牛魔王~/propertyproperty nameage value5000/propertyproperty nameskill value芭蕉扇~/propertyproperty nameid value1000/property/bean /beans使用SpringBoot 的Configuration 添加/注入组件 创建quickstart\src\main\java\com\nlc\springboot\config\BeanConfig.java 程序员可以通过Bean 注解注入bean对象到容器。 当一个类被 Configuration 标识该类-Bean 也会注入容器。 //Configuration 标识这是一个配置类: 等价配置文件 Configuration public class BeanConfig {/*** 解读* 1. Bean : 给容器添加组件, 就是Monster bean* 2. monster01() : 默认 你的方法名monster01 作为Bean的名字/id* 3. Monster : 注入类型, 注入bean的类型是Monster* 4. new Monster(200,牛魔王,500,疯魔拳) 注入到容器中具体的Bean信息* 5. Bean(name monster_nmw) : 在配置、注入Bean指定名字/id monster_nmw* 6. 默认是单例注入* 7. 通过 Scope(prototype) 可以每次返回新的对象就多例.*///Bean(name monster_nmw)Bean//Scope(prototype)public Monster monster01() {return new Monster(200, 牛魔王, 500, 疯魔拳);} }2.修改MainApp.java , 从配置文件/容器获取bean , 并完成测试 public static void main(String[] args) {//启动springboot应用程序/项目ConfigurableApplicationContext ioc SpringApplication.run(MainApp.class, args);//1. ioc.getBean(monster01, Monster.class) 是从BeanConfig 配置类/容器获取bean实例//2. 默认是单列模式, 所以monster01 monster02//获取BeanConfig 配置类的组件/bean 实例Monster monster01 ioc.getBean(monster01, Monster.class);System.out.println(monster01);Monster monster02 ioc.getBean(monster01, Monster.class);System.out.println(monster01 monster02); }也可以通过Debug 来查看ioc 容器是否存在monster01 Bean 实例 beanDefinitionMap, 只是存放了bean 定义信息, 真正存放Bean 实例的在singleonObjectis的Map 中, 对于非单例是每次动态反射生成的实例 Configuration 注意事项和细节 配置类本身也是组件 因此也可以获取, 测试修改MainApp.java public static void main(String[] args) {ConfigurableApplicationContext ioc SpringApplication.run(MainApp.class, args);//1. ioc.getBean(monster01, Monster.class) 是从BeanConfig 配置类/容器获取bean 实例//2. 默认是单列模式, 所以monster01 monster02//获取BeanConfig 配置类的组件/bean 实例Monster monster01 ioc.getBean(monster01, Monster.class);System.out.println(monster01);Monster monster02 ioc.getBean(monster01, Monster.class);System.out.println(monster01 monster02);//配置类本身也是组件 因此也可以获取BeanConfig beanConfig ioc.getBean(BeanConfig.class);System.out.println(beanConfig beanConfig); }SpringBoot2 新增特性 proxyBeanMethods 指定Full 模式和Lite 模式 修改quickstart\src\main\java\com\nlc\springboot\config\BeanConfig.java /*** * 1. proxyBeanMethods代理bean的方法* * (1) Full(proxyBeanMethods true)、【保证每个Bean方法被调用多少次返回的组件都是单实例的, 是代理方式】* * (2) Lite(proxyBeanMethods false)【每个Bean方法被调用多少次返回的组件都是新创建的, 是非代理方式】* * (3) 特别说明: proxyBeanMethods 是在 调用Bean方法 才生效因此需要先获取BeanConfig 组件再调用方法* * 而不是直接通过 SpringBoot 主程序得到的容器来获取bean, 注意观察直接通过ioc.getBean() 获取Bean, proxyBeanMethods 值不会生效* * (4) 如何选择: 组件依赖必须使用Full模式默认。如果不需要组件依赖使用 Lite模式* * (5) Lite模 也称为轻量级模式因为不检测依赖关系运行速度快*/ //Configuration 标识这是一个配置类: 等价配置文件 Configuration(proxyBeanMethods false) public class BeanConfig {/*** 解读* 1. Bean : 给容器添加组件, 就是Monster bean* 2. monster01() : 默认 你的方法名monster01 作为Bean的名字/id* 3. Monster : 注入类型, 注入bean的类型是Monster* 4. new Monster(200,牛魔王,500,疯魔拳) 注入到容器中具体的Bean信息* 5. Bean(name monster_nmw) : 在配置、注入Bean指定名字/id monster_nmw* 6. 默认是单例注入* 7. 通过 Scope(prototype) 可以每次返回新的对象就多例.*///Bean(name monster_nmw)Bean//Scope(prototype)public Monster monster01() {return new Monster(200, 牛魔王, 500, 疯魔拳);} }修改quickstart\src\main\java\com\nlc\springboot\MainApp.java SpringBootApplication(scanBasePackages com.nlc) public class MainApp {public static void main(String[] args) {//启动SpringBoot 应用程序ConfigurableApplicationContext ioc SpringApplication.run(MainApp.class, args);//1. ioc.getBean(monster01, Monster.class) 是从BeanConfig 配置类/容器获取bean实例//2. 默认是单列模式, 所以monster01 monster02//获取BeanConfig 配置类的组件/bean 实例Monster monster01 ioc.getBean(monster01, Monster.class);System.out.println(monster01);Monster monster02 ioc.getBean(monster01, Monster.class);System.out.println(monster01 monster02);//配置类本身也是组件 因此也可以获取monster01 ! monster02//上面配置了Configuration(proxyBeanMethods false)获取到的都是新创建的BeanConfig beanConfig ioc.getBean(BeanConfig.class);System.out.println(beanConfig beanConfig);Monster monster03 beanConfig.monster01();Monster monster04 beanConfig.monster01();System.out.println(monster03 monster04 : (monster03 monster04));} }配置类可以有多个, 就和Spring 可以有多个ioc 配置文件是一个道理. 创建quickstart\src\main\java\com\nlc\springboot\config\BeanConfig2.java Configuration public class BeanConfig2 {Beanpublic Monster monster100() {return new Monster(200, 牛魔王~~, 500, 芭蕉扇);} }完成测试quickstart\src\main\java\com\nlc\springboot\MainApp.java SpringBootApplication public class MainApp {public static void main(String[] args) {//启动SpringBoot 应用程序ConfigurableApplicationContext ioc SpringApplication.run(MainApp.class, args);Monster monster100 ioc.getBean(monster100, Monster.class);System.out.println(monster100);} }Import 应用实例 说明: 演示在SpringBoot, 如何通过Import 来注入组件 创建quickstart\src\main\java\com\nlc\springboot\bean\Cat.java public class Cat { }创建quickstart\src\main\java\com\nlc\springboot\bean\Dog.java public class Dog { }修改BeanConfig.java 通过Import 注入组件 /** * Import 可以传入一个数组可以一次注入多个组件 * public interface Import { * Class?[] value(); * } * 注意Import 方式注入的组件, 默认组件的名字就是全类名 */ Import({Dog.class, Cat.class}) // Configuration//标识这是一个配置类: 等价配置文件 Configuration(proxyBeanMethods false) public class BeanConfig { }修改MainApp.java 完成测试 public static void main(String[] args) {//启动springboot应用程序/项目ConfigurableApplicationContext ioc SpringApplication.run(MainApp.class, args);Dog dogBean ioc.getBean(Dog.class);Cat catBean ioc.getBean(Cat.class);System.out.println(dogBean-- dogBean);System.out.println(catBean-- catBean); }默认类型导入是单例的如果有多个同类型bean就会报错。 Conditional Conditional 介绍 条件装配满足Conditional 指定的条件则进行组件注入Conditional 是一个根注解下面有很多扩展注解 应用实例 要求: 演示在SpringBoot, 如何通过ConditionalOnBean 来注入组件只有在容器中有name monster_nmw 组件时才注入dog01, 代码如图 Bean public Dog dog01() {return new Dog(); }先测试下当前是否能注入dog01 System.out.println(容器是否注入了dog01 ioc.containsBean(“dog01”)); 4.修改BeanConfig.java , 加入ConditionalOnBean 条件约束并完成测试 Import({Dog.class, Cat.class}) // Configuration//标识这是一个配置类: 等价配置文件 Configuration(proxyBeanMethods false) //设置每次获取bean都创建新的要符合条件才生效 public class BeanConfig {/*** 1. Bean : 给容器中添加组件* 2. monster01() : 默认方法名作为组件的id* 3. Monster: 返回类型就是组件类型, 返回的值就是new Monster(100, 牛魔王, 500, 芭蕉扇)* 4. Bean(monster_nmw): 重新指定组件的id “monster_nmw”* 5. 配置类里面使用Bean 标注在方法上给容器注册组件默认是单实例的*/// Bean(monster_nmw)Beanpublic Monster monster01() {return new Monster(100, 牛魔王, 500, 芭蕉扇);}/*** ConditionalOnBean(name monster_nmw):* 1. 表示只有容器中注入了name monster_nmw 的组件下面的组件(dog01)才会被注入* 2. ConditionalOnBean(name monster_nmw) 也可以放在类名处* 则表示对该配置类中所有要注入的组件都进行条件约束* 3. 还有很多其它条件约束注解用到时在讲解.*/ConditionalOnBean(name monster_nmw)Beanpublic Dog dog01() {return new Dog();} }自己测试打开注解看是否注入。 ImportResource 作用原生配置文件引入, 也就是可以直接导入Spring 传统的beans.xml 可以认为是SpringBoot 对Spring 容器文件的兼容. ImportResource 应用实例 需求: 将beans.xml 导入到BeanConfig.java 配置类 并测试是否可以获得beans.xml注入/配置的组件 将beans.xml放在resource资源目录下 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd!--配置了Monster bean--bean idmonster03 classcom.nlc.springboot.bean.Monsterproperty namename value牛魔王~/propertyproperty nameage value5000/propertyproperty nameskill value芭蕉扇~/propertyproperty nameid value1000/property/bean /beans修改BeanConfig.java / 或者创建新的BeanConfig3.java(建议创建新的配置类) 来测试,使用ImportResource 导入beans.xml //外部导入bean Import({Dog.class, Cat.class}) // Configuration//标识这是一个配置类: 等价配置文件 Configuration(proxyBeanMethods false) //导入beans.xml ImportResource(classpath:beans.xml) public class BeanConfig { }在MainApp.java 测试 public static void main(String[] args) {ConfigurableApplicationContext ioc SpringApplication.run(MainApp.class, args);System.out.println(容器是否注入了dog01 ioc.containsBean(dog01));System.out.println(monster03: ioc.containsBean(monster03));System.out.println(ioc.getBean(monster03)); }配置绑定 说明使用Java 读取到SpringBoot 核心配置文件application.properties 的内容并且把它封装到JavaBean 中 应用实例 需求: 将application.properties 指定的k-v 和JavaBean 绑定 #默认server.port8080 server.port10000 #比如: 默认spring.servlet.multipart.max-file-size1MB #默认配置最终都是映射到某个类上,比如这里配置会映射到MultipartProperties spring.servlet.multipart.max-file-size10MB #设置属性k-v #前面的futn01用于指定/区分不同的绑定对象 furn01.id100 furn01.namesoft_chair!! furn01.price45678.9创建quickstart\src\main\java\com\nlc\springboot\bean\Furn.java Component ConfigurationProperties(prefix furn01) //指定前缀。以 前缀匹配properties 文件的值将值注入bean /*** 说明:* 1. Equivalent to {code Getter Setter RequiredArgsConstructor ToString EqualsAndHashCode}* 2. Data 注解等价使用了 如下注解 Getter Setter RequiredArgsConstructor ToString EqualsAndHashCode*/ //Data //说明: NoArgsConstructor 在编译时会生成无参构造器, 前面说过默认情况下会生成一个无参构造器 //说明当我们有其它构造器生成时如果你希望仍然有无参构造器就需要使用NoArgsConstructor指定一下,否则就会覆盖无参构造器从而代码错误 NoArgsConstructor //说明AllArgsConstructor 在编译时会生成全参构造器 AllArgsConstructor //ToString 在编译时生成toString, 默认情况下会生成一个无参构造器 ToString //生成所有的set/get方法 Setter Getter public class Furn {private Integer id;private String name;private Double price; }修改HelloController.java Controller public class HelloController {RequestMapping(/hello)ResponseBodypublic String hello(){return hello, spring boot;}AutowiredFurn furn;RequestMapping(/furn)ResponseBodypublic Furn furn(){return furn;} }启动SpringBoot 主程序测试 如果测试时发现有结果为空说明properties 文件的属性写错了。 配置绑定还有第2 种方式, 也给小伙伴演示下, 完成测试效果一样 注意: 注销Component 需要在BeanConfig.java( 说明: 也可以是其它配置类) 配置EnableConfigurationProperties(Furn.class), 否则会提示错误 //EnableConfigurationProperties(Furn.class)解读 //1、开启Furn 配置绑定功能 //2、把Furn 组件自动注册到容器中 EnableConfigurationProperties(Furn.class) public class BeanConfig {}注意事项和细节 1.如果application.properties 有中文, 需要转成unicode 编码写入, 否则出现乱码。可以使用unicode转码工具进行转换。 #设置属性k-v furn01.id100 furn01.namesoft_chair\u6c99\u53d1!! furn01.price45678.92.使用ConfigurationProperties(prefix “furn01”) 会提示如下信息, 但是不会影响使用 解决ConfigurationProperties(prefix “furn01”) 提示信息, 在pom.xml 增加依赖, 即可 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional /dependency
http://www.yutouwan.com/news/221913/

相关文章:

  • wordpress建站主题做AE视频素材在哪些网站上可以找
  • 局网站建设制度昆明比较好的网站开发公司
  • 网站关键词多少个合适房山网站制作
  • 齐齐哈尔网站建设展会设计公司简介
  • 医疗号网站开发wordpress 显示word文档
  • 电子商务网站建设策划书的流程合肥网站商城开发
  • 重庆seo网站如何开发移动网站
  • 网站logo素材怎么做淘客网站推广
  • 怎么申请自己的网站网址北京产品网站建设
  • 住房和城乡建设部网站 上海河北婚庆网站建设定制
  • 网站建设与管理报告wordpress文章页面图片自动适应
  • 天津市建设教育培训中心网站网站cms分站系统
  • 建外贸网站用什么主机建筑人才网代码
  • 内蒙古高等级公路建设开发有限责任公司网站数据库修改wordpress文章浏览量
  • 做网站商家网站开发js不更新
  • 山东天成水利建设有限公司网站中国污水处理工程网
  • ppt模板网站开发福建省建设执业资格注册管理中心网站
  • 可以做任务的网站有哪些内容企业门户网站方案
  • 音乐视频怎么做mp3下载网站深圳网站建设模板乐云seo
  • 网站备案帐号是什么成品源码1688网站免费
  • 秦皇岛网站开发价格在国内的服务器上建设国外网站
  • 景安网站备案要多久ico 众筹网站开发
  • 龙泉市建设局网站wordpress用户注册登录插件
  • 专业网站建设哪家好WordPress点链接没反应
  • 创建一个网站网站策划书格式及范文
  • 合肥响应式网站建设方案杭州seo关键词优化公司
  • 图片做记录片的是哪个网站网站设计公司 国际
  • 网站 源码 php如何架设php网站
  • 范县网站建设非法期货做网站
  • 企业建站系统营销吧tt团队沧县网络推广公司