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

网站建设与管理淘宝搜索域名

网站建设与管理淘宝,搜索域名,北辰正方建设集团网站,网址推广文章目录 前言一、Configuration二、Import导入组件三、Conditional条件装配四、ImportResource导入Spring配置文件五、ConfigurationProperties配置绑定总结 前言 本文主要讲诉Configuration、Import、Conditional、ImportResource、ConfigurationProperties注解。 先将实体… 文章目录 前言一、Configuration二、Import导入组件三、Conditional条件装配四、ImportResource导入Spring配置文件五、ConfigurationProperties配置绑定总结 前言 本文主要讲诉Configuration、Import、Conditional、ImportResource、ConfigurationProperties注解。 先将实体类给大家方便下面测试 get、set、构造器大家自己添加这里我用的是ToString等注解以后会出文章讲诉所以没写这些就不列出来了。 public class Pet {private String name;}public class User {private String name;private Integer age;private Pet pet; }public class Car {private String brand;private String price; }一、Configuration 1、配置类里面使用Bean标注在方法上给容器注册组件默认也是单实例的所谓单实例跟我们在Spring中了解的bean创建对象的单实例是一样的就是在调用getBean方法创建相同类型实例对象时这些对象的地址相同即无论创建多少对象都是同一个对象。多实例就是每次创建对象都重新创建一个不同地址的新对象。 2、配置类本身也是组件。 3、proxyBeanMethods代理bean的方法。 Full模式(proxyBeanMethods true)保证每个Bean方法被调用多少次返回的组件都是单实例的默认 Lite模式(proxyBeanMethods false)每个Bean方法被调用多少次返回的组件都是新创建的 配置类 Configuration(proxyBeanMethods true) //告诉SpringBoot这是一个配置类 配置文件 public class MyConfig {/*** Full:外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象* return*/Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值就是组件在容器中的实例public User user01(){User zhangsan new User(zhangsan, 18,tomcatPet());//user组件依赖了Pet组件return zhangsan;}Bean(tom)public Pet tomcatPet(){return new Pet(tomcat);} }SpingBoot启动类 SpringBootConfiguration EnableAutoConfiguration ComponentScan(com.dragon.boot) public class MainApplication {public static void main(String[] args) {//1、返回我们IOC容器ConfigurableApplicationContext run SpringApplication.run(MainApplication.class, args);//2、查看容器里面的组件// String[] names run.getBeanDefinitionNames();// for (String name : names) {// System.out.println(name);// }//3、从容器中获取组件Pet tom01 run.getBean(tom, Pet.class);Pet tom02 run.getBean(tom, Pet.class);System.out.println(组件(tom01 tom02));//4、com.atguigu.boot.config.MyConfig$$EnhancerBySpringCGLIB$$51f1e1ca1654a892MyConfig bean run.getBean(MyConfig.class);System.out.println(bean);//如果Configuration(proxyBeanMethods true)代理对象调用方法。SpringBoot总会检查这个组件是否在容器中有。//保持组件单实例User user bean.user01();User user1 bean.user01();System.out.println(user user1);User user01 run.getBean(user01, User.class);Pet tom run.getBean(tom, Pet.class);System.out.println(用户的宠物(user01.getPet() tom));} }看运行结果分析 组件true 配置类中我用的Full模式Configuration(proxyBeanMethods true) 当然就是单实例模式所有创建的对象都是同一个对象。com.dragon.boot.config.MyConfig$ $ SpringCGLIB$$0283e8358 这个输出是我getBean获取的配置类组件可以看出配置类本身也是组件。用户的宠物true 当我开启单实例模式时就能够处理依赖关系这里我创建的组件宠物用户组件里的宠物User zhangsan new User(zhangsan, 18,tomcatPet());。我创建的用户组件时就是调用的tomcatPet()因为是单实例模式所以我在创建用户调用创建的宠物和直接创建的宠物都是同一个对象。 启动类中我写了个查看容器里面的组件的方法注释掉了可以运行在控制台CtrlF搜索查看注册的组件。 将proxyBeanMethods 属性改成false运行结果就变成了false。 总结 配置 类组件之间无依赖关系用Lite模式加速容器启动过程减少判断配置 类组件之间有依赖关系方法会被调用得到之前单实例组件用Full模式默认 二、Import导入组件 Bean、Component、Controller、Service、Repository它们是Spring的基本标签在Spring Boot中并未改变它们原来的功能。 ComponentScan在Spring学习中大家一定接触了吧就是开启组件扫描。 Import({User.class、DBHelper.class})会给容器中自动创建出User、DBHelper组件默认组件的名字就是全类名。如果创建多个组件就在在大号内添加用逗号隔开。 Import({User.class,DBHelper.class}) Configuration(proxyBeanMethods false) //告诉SpringBoot这是一个配置类 配置文件 public class MyConfig {//.... }启动类 //1、返回我们IOC容器 ConfigurableApplicationContext run SpringApplication.run(MainApplication.class, args);//...//5、获取组件 String[] beanNamesForType run.getBeanNamesForType(User.class);for (String s : beanNamesForType) {System.out.println(s); }三、Conditional条件装配 条件装配满足Conditional指定的条件则进行组件注入 这里用ConditionalOnMissingBean举例说明 ConditionalOnMissingBean(name “tt”) 用在类上没有tt名字的Bean时才会将类里所有配置注册成组件 用在方法上没有tt名字的Bean时才会将改方法注册成组件 Configuration(proxyBeanMethods true) //告诉SpringBoot这是一个配置类 配置文件 Import({User.class}) ConditionalOnMissingBean(name tom) public class MyConfig {/*** Full:外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象* return*/Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值就是组件在容器中的实例public User user01(){User zhangsan new User(zhangsan, 18,tomcatPet());//user组件依赖了Pet组件return zhangsan;}Bean(tom)public Pet tomcatPet(){return new Pet(tomcat);} }启动类 ConfigurableApplicationContext run SpringApplication.run(MainApplication.class, args);//2、查看容器里面的组件String[] names run.getBeanDefinitionNames();for (String name : names) {System.out.println(name);}boolean tom run.containsBean(tom);//是否包含某个组件System.out.println(容器中Tom组件tom);//falseboolean user01 run.containsBean(user01);System.out.println(容器中user01组件user01);//trueboolean tom22 run.containsBean(tom22);System.out.println(容器中tom22组件tom22);//true四、ImportResource导入Spring配置文件 公司项目使用bean.xml文件生成配置bean然而你为了省事想继续复用bean.xmlImportResource粉墨登场。 bean.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsdbean idhaha classcom.dragon.boot.bean.Userproperty namename valuezhangsan/propertyproperty nameage value18/property/beanbean idhehe classcom.atguigu.boot.bean.Petproperty namename valuetomcat/property/bean /beans复用方法 ImportResource(classpath:bean.xml) public class MyConfig {//... }启动类测试 //1、返回我们IOC容器ConfigurableApplicationContext run SpringApplication.run(MainApplication.class, args);boolean haha run.containsBean(haha);boolean hehe run.containsBean(hehe);System.out.println(hahahaha);//trueSystem.out.println(hehehehe);//true返回true说明注册成了组件。 五、ConfigurationProperties配置绑定 使用Java读取到properties文件中的内容并且把它封装到JavaBean中 传统方法 public class getProperties {public static void main(String[] args) throws FileNotFoundException, IOException {Properties pps new Properties();pps.load(new FileInputStream(a.properties));Enumeration enum1 pps.propertyNames();//得到配置文件的名字while(enum1.hasMoreElements()) {String strKey (String) enum1.nextElement();String strValue pps.getProperty(strKey);System.out.println(strKey strValue);//封装到JavaBean。}}}SpringBoot的两种方法 ConfigurationProperties Component 假设有配置文件application.properties mycar.brandBYD mycar.price100000只有在容器中的组件才会拥有SpringBoot提供的强大功能所以Bean对象类注册成组件 下面的prefix是指属性前缀 Component ConfigurationProperties(prefix mycar) public class Car { ... }EnableConfigurationProperties ConfigurationProperties 1.开启Car配置绑定功能 2.把这个Car这个组件自动注册到容器中 配置类 EnableConfigurationProperties(Car.class) public class MyConfig {//... }Car类 ConfigurationProperties(prefix mycar) public class Car {//... }HelloController类 RestController public class HelloController {AutowiredCar car;RequestMapping(/car)public Car car(){return car;}RequestMapping(/hello)public String handle01(){return HelloSpring Boot 2!你好;} }这里我写了个控制层运行结果如下 可以看出确实将properties文件内的内容封装了。 总结 以上就是SpringBoot的一些底层注解的讲解。
http://www.huolong8.cn/news/33974/

相关文章:

  • 广东省住房和城乡建设厅网站进不去梧州论坛红豆社区
  • 建设手机网站上海网站平台建设
  • 绥化市建设局网站网络开发是什么专业
  • 网站搭建行业松原做招聘的网站有哪些
  • 西部数码网站管理助手 mysql基层建设是哪个网站的
  • 定期更新网站微信公众号菜单跳转的网页怎么制作
  • 西安seo网站管理个人简历免费导出
  • 南城仿做网站智慧团建网站怎么转团关系
  • 成都房产网官方网站建设手机网站的方案
  • 深圳制作网站公司哪里好书画展示网站源码
  • 怎样做网站设计要交税吗个安装wordpress
  • 化学网站定制房地产怎么白手起家
  • 找工程去哪个网站网站制作公司兴田德润简介
  • 2网站建设张家界网站建设app
  • 苏州市工业园区规划建设局网站网站建设比较合理的流程
  • 商业网站页面公司广告墙设计图片
  • wap网站html5顺德网站建设报价
  • 美妆网站建设环境分析万网封停慧聪网域名事件
  • 开发网站公司地址做网站用的浏览器有哪些
  • 二级网站都在一台服务器怎么做域名苏州 手机网站
  • 做网站需要每年都缴费吗涿州市住房和城乡建设局网站
  • 网站透明效果旅游景点网站策划书
  • 用asp.net做的网站框架推广策略和推广方案一样吗
  • 北京做网站建设公司哪家好做网站嘉兴
  • 建筑设计网站排行榜0元可以注册公司吗
  • 建站设计网站网站管家
  • excel网站链接怎么做网上书店网站建设设计的收获
  • 网站查询访问产品推广文案100字
  • 网站描述标签优化南京网站开发南京乐识正规
  • 英文网站推荐网站优化 西安