SpringBoot参数注入

本文介绍了Spring Boot如何通过properties文件进行属性注入,包括基本数据类型、日期类型、集合类型属性以及对象的注入方法,详细展示了properties配置及Controller中的使用示例。

Spring Boot中通过properties给属性赋值

1.注入基本数据类型属性

properties文件

id=99
name=张三

Controller中

@Controller
@RequestMapping("/User")
public class TestController {
    @Value("${name}")
    private String name;
    @Value("${id}")
    private int id;
    @ResponseBody
    @RequestMapping("/test")
    public String insertTest(){
        System.out.println(name);
        System.out.println(id);
        return "ok"+name;
    }
}

2.注入基本集合类型属性与DATE类型属性

date类型
properties文件中

date = 2019/2/4 #日期必须是这个格式

Controller中

 @Value("${date}")
    private Date date;
    @ResponseBody
    @RequestMapping("/test")
    public String insertTest(){
      System.out.println(date);
       return "ok"+name;
    }

List类型 数组类型
properties文件中

strs=aa,bb,cc
lists=qq,cc,zz

Controller中

@Value("${strs}")
    private String[] strs;
    @Value("${lists}")
    private ArrayList<String> arry;
     @ResponseBody
    @RequestMapping("/test")
    public String insertTest(){
        System.out.println(Arrays.toString(strs));
        System.out.println(arry);
        return "ok"+name;
    }`

2.注入对象

properties文件中

##必须带统一前缀
user.id=99
user.age=43

实体类中

@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String name;
    private int age;
    ...
### 解决Spring Boot中依赖注入失败的问题 #### 一、理解依赖注入原理 在Spring框架内,依赖注入是一种用于减少组件之间耦合度的设计模式。通过依赖注入,对象不再负责自己获取所需的服务或资源,而是由容器提供这些依赖项[^3]。 #### 二、排查常见原因 当遇到依赖注入失败的情况时,可以从以下几个方面着手分析: - **未标注`@Component`或其他扫描注解**:如果类没有被标记为可扫描的组件,则不会被纳入到IoC容器管理之中,自然也就无法完成自动装配。 - **作用域不匹配**:某些情况下,比如一个单例bean试图注入原型范围内的bean可能会引发问题;因为每次请求都会创建新的实例而破坏了预期的行为逻辑。 - **循环引用**:两个或多个beans相互间接地持有对方作为属性成员变量,在初始化阶段形成闭环路径,导致spring无法正常加载上下文环境[^1]。 #### 三、解决方案建议 ##### 使用构造器注入而非字段级@Autowired 相比于直接在字段上应用`@Autowired`标签的方式,采用构造函数来进行参数绑定更加安全可靠,并且有助于提高测试友好性和不可变性支持[^2]。 ```java public class ServiceA { private final RepositoryB repository; public ServiceA(RepositoryB repository){ this.repository = Objects.requireNonNull(repository); } } ``` ##### 配置延迟加载(@Lazy) 对于那些确实存在不可避免的循环依赖场景下,可以通过设置懒加载策略(`@Lazy`)让其中一个bean直到真正需要用到的时候才去实例化,以此打破启动期间形成的死锁局面[^4]。 ```java @Service @Lazy public class CircularDependencyService{ } ``` ##### 调整Bean定义顺序 确保项目结构合理规划,尽量避免不必要的复杂嵌套关系,按照合理的层次划分模块并调整相应的包名命名空间位置,使得整个应用程序能够顺利编译运行起来而不至于陷入混乱的状态当中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值