温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java参数怎么注入

发布时间:2026-10-24 22:30:43 来源:亿速云 阅读:101 作者:小樊 栏目:编程语言

在 Java 里“参数注入”这个说法在不同场景含义不一样,下面按常见场景给你系统讲一下,你可以对号入座。


一、Spring 中的参数注入(最常见)

1️⃣ 构造器注入(推荐)

@Service
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

✅ Spring 自动注入 UserRepository


2️⃣ Setter 注入

@Service
public class UserService {
    private UserRepository userRepository;

    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

3️⃣ 字段注入(不推荐)

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
}

4️⃣ Controller 方法参数注入(HTTP 请求参数)

@GetMapping("/user")
public String getUser(@RequestParam("id") Long id) {
    return "id = " + id;
}

常用注解:

  • @RequestParam → 请求参数
  • @PathVariable → URL 路径
  • @RequestBody → JSON body
  • @RequestHeader → 请求头

二、配置文件参数注入(application.yml / properties)

1️⃣ @Value

@Value("${app.name}")
private String appName;

2️⃣ @ConfigurationProperties(推荐)

@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
    private String name;
    private int port;
    // getter / setter
}

yml:

app:
  name: demo
  port: 8080

三、方法参数注入(AOP / 自定义注解)

示例:自定义注解 + 参数注入

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface CurrentUser {}

在 Controller:

public String info(@CurrentUser User user)

通过 HandlerMethodArgumentResolver 实现注入逻辑。


四、命令行参数注入(Spring Boot)

java -jar app.jar --server.port=9090

代码中:

@Value("${server.port}")
private int port;

五、测试中的参数注入

@SpringBootTest
class UserServiceTest {

    @Autowired
    private UserService userService;
}

六、常见误区

❌ 静态变量不能注入
❌ new 出来的对象不会注入
❌ 非 Spring 管理的类不能用 @Autowired


如果你指的是 某个具体框架(如 MyBatis、Spring MVC、JUnit、自定义注解) 或 某个具体报错,直接把代码或异常贴出来,我可以精准帮你改。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手