2020/8/3springboot工厂特性之创建对象和注入语法以及构建自定义对象元数据
springboot=spring 项目管理工厂特性 +springmvc控制器
springboot的原理就是通过各种各样的包通过总的配置对别的注解扫描,因为别的注解也标识了别的内容,所以把所有的内容都包含进来了,但是你如果没有写注解,就扫描不到/
创建单个自定义对象
注解方式:@Component通用组件对象的创建注解
@Service标识业务层组件对象创建 @Controller控制器对象创建 @Repository
在HelloServiceControllerImp写@service注解。
这三层,如果有这三层之外的组件对象,就用通用的@Component就可以。其实是都可以用这个注解的,但是spring官网给了就用,并且每个注解还是有区别的/。
创建多个对象(多个方法,因为这里每一个方法代表一个对象)
工厂中每一个方法代表一个对象的创建 Calendar
用的@Configuration 配置注解,用在类上,相当于曾经的spring.xml文件。
在这里里面写的方法上用@Bean
@Configuration在源代码中是不需要扫描的(多个)。@Component是需要扫描的。(单个)
@Scope标识这是个单例,可以用在多个对象中的其中一个,这样的话如果调用同一个此对象,出来的东西是一模一样的。
@Scope(”prototype“)这种的是出来得多例的,每次定义的对象拿出来是不同的。
springboot中注入方法
send注入和构造注入都是用的配置文件
另外一个就是注解注入:
1、使用@Value注解进行属性注入
再配置文件里写
再用@Value(”${name}").
遍历数组就是再.yml配置文件里面写(j记得要空一格)
各个元素用,隔开。
qqs.iter.是数据的遍历的快捷方式(idea)
注入基本类型: String +日期类型+八种基本类型 使用Value形式注入(就是和上面说的一样)
然后集合的话再配置文件里写法是一样的。再程序里写的是
strs.forEach(str->System.out.prinftln(str));
maps.forEach((k,v)-> System.out.prinftln("key:"+key+"value:"+value));List和Map都是用的lamda表达式遍历的
1、数组和基本类型还有日期类型的都是用的一致的格式 .yml文件里面: qqs: abc,bcd,bbd 程序里: Value("${qqs}") private String[] qqs; 出来的直接就是一个一个的数组格式的 2、 集合类型的 2.1、List类型的 .yml文件里面: strs: abc,bca,bbd 程序里: @Value(”#{'${strs}'.spilt(',')}") //如果不这样写的话,出来的的东西再一行,也就是说是一个元素,而不是三个元素。 private List<String> strs; 2.2、 Map类型的 .yml文件里面: maps: "{key1:'value1', key2: 'value2'}" 程序里: @Value("#{${maps}}") private Map<String, String> maps.//注入map
但是在对象里可以这样注入:
maps:
abc:xiaohei
bcd:xiaobai
2、 直接注入对象
第一种:对对象里面的变量用配置文件一个一个注入到变量最后得到对象,和上面的一样 。
第二种:前置注入,就是把整个对象所有的变量一起赋值,然后直接注入到对象。如果写完了。
用@ConfigurationProperties(prefix=”user“)直接接把对象传过来了,在对象上。
用name和username会穿成windows的名字
构建自定义对象元数据
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
就是自己写的类里面的对象什么的都可以自动提示出来,在配置文件里也是的