主题是关于springboot装配注入
因为springboot是spring框架的进一步提取和封装,所以下面使用spring做对比。
## 首先是spring里的装配注入方式
- get、set注入
· <bean id="user" class="com.yousian.pojo.User">
<property name="username" value="zhangsan"></property>
<property name="password" value="1234"></property>
</bean>
id:一般是当前类名首字母小写
class:类的全路径
name:属性名
value:属性值
2.构造函数的注入
<bean id="user" class="com.yousian.pojo.User">
<constructor-arg name="username" value="eric"></constructor-arg>
<constructor-arg name="password" value="1234"></constructor-arg>
</bean>
constructor-arg:通过构造函数注入需要用此标签,get、set方法的话用properties标签
p名称空间的注入 了解
springEL表达式的注入 了解
注解的方式注入: @Value @Resource @AutoWired
接下来就是springboot里的是如何注入的属性的勒?
这里要先说一下springboot的配置文件的格式了,分为yml和properties两种格式
yml类型的配置文件里面的属性是key: value形式的(冒号后面必须要有空格),相同缩进的key被视为同级
例如:
server:
port: 2021
servlet:
path: /day02
user:
username: zhangsan
password: 123
list: #集合
- abc
- def
- ghl
这里server 、 user 、list就是同一级,port、servlet也是同一级
# properties类型的配置文件,设置属性时则为这样的
:
student.name=张三
student.age=10
student.gender=male
student.score=99
类名.属性名
这里我们用yml类型的配置文件
server:
port: 2021
servlet:
path: /day02
user:
username: zhangsan
password: 123
list: #集合
- abc
- def
- ghl
person:
name: Oscar
age: 19
boss: false
birth: 2019/12/12
maps: {k1: v1,k2: v2}
lists:
- eric
- kobe
dog:
name: 大黄
age: 3
string类型的属性直接写字符串即可,不用加单双引号
map类型的数据key: value中间的冒号也必须要空格
list需要加一个- 后面加个空格
对象属性需要在冒号后面加空格
写完配置文件,我们去创建相应的实体类
@Component //<bean id="person" class com.usian.pojo.Person>
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<String> lists;
private Dog dog;
get \ set 方法省略
这里使用了两个注解
@Component 相当于<bean id="person" class com.usian.pojo.Person>
也就是把类交给spring容器管理
@ConfigurationProperties(prefix = “person”)
这个注解是为了让我们可以方便的获取配置文件里的值
注意:必须要保证实体类属性和配置文件属性名称一样
@RestController
@RequestMapping("/springboot")
public class HelloSpringBoot {
@Autowired
Person person;
@RequestMapping("/person")
public Person person(){
System.out.println(person);
return person;
}
}
接下来到controller里测试一下 (springboot环境在我的上一篇博客)
用 @Autowired注入person
运行@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } }
即可测试