Autowired 注入后怎么运行构造方法

2020-07-09 08:38:02 +08:00
 bushiren

`@Autowired private Test_bbs test;

@RequestMapping("/test")
public void test( ) {
   怎么运行 Test_bbs 的构造方法啊;
}`

@Service public class Test_bbs{ public Test_bbs(){ System.out.println("运行到我了 "); } }

3339 次点击
所在节点    Java
16 条回复
qping
2020-07-09 08:58:52 +08:00
构造方法 new 的时候会调用,spring 启动时候会先构建 Test_bbs 对象
bushiren
2020-07-09 09:06:24 +08:00
@qping 注入的 没 new 该怎么传参啥的呢
optional
2020-07-09 09:07:53 +08:00
可以用 @PostConstruct
不过不推荐 @Autowire,推荐构造函数注入。
bushiren
2020-07-09 09:11:38 +08:00
@optional 大佬可以码个例子吗,新手多多指教
qping
2020-07-09 09:16:24 +08:00
如果参数是在配置文件中,使用 @Value 注入
如果参数在其他类中,使用 @Autowire 把其他类注入进来
如果参数在数据库或者其他地方需要读取,可以像楼上说的用 @PostConstruct
cxshun
2020-07-09 09:18:09 +08:00
默认情况下,`spring`是使用无参构造函数初始化类的。如果你希望调用有参的构造函数,那么就类似`@optional`兄弟说的在构造函数上面加`@PostConstruct`,这个在网上找找就可以了。
ixx
2020-07-09 11:37:09 +08:00
```java
@Service
public class Test_bbs{
@PostConstruct
public Test_bbs(){
System.out.println("运行到我了 ");
}
}
```
这样就可以初始化了
bushiren
2020-07-09 11:43:26 +08:00
@qping 谢谢层主,了解了,
@cxshun 谢谢,大佬解答
@ixx 谢谢层主,这样。外部另一个类是要怎么调用的和传参呀,
ixx
2020-07-09 14:49:53 +08:00
@bushiren #8 你想往构造方法里传参?
cxshun
2020-07-09 14:53:18 +08:00
@ixx #9
@bushiren #8 我猜这位兄弟的意思应该是要注入另外一个类到构造函数吧?不知道理解对不对哈。
如果是这样,那就直接在构造函数上面用 @Autowired 就好了。
如果不是,那可能就要考虑一下是啥情况了哈
bushiren
2020-07-09 14:59:42 +08:00
@ixx 呃。难道不行吗。我这想法 不奇葩吧,
bushiren
2020-07-09 15:00:41 +08:00
@cxshun 我就是想 直接和 new 一样 使用构造函数,并可以传参,


通过注入的方式罢了
ixx
2020-07-09 15:30:38 +08:00
@bushiren #11
spring 管理的 bean 一般在容器初始化的时候就生成实例了 你注入的时候已经有实例了 如果你想在他实例化的时候指定值 哪直接在写死就行 或者放配置文件里读取
limuyan44
2020-07-09 15:49:01 +08:00
学习 spring 还是建议从基础开始学起,不然以后坑的是自己。
heyjim75111
2020-07-10 09:02:48 +08:00
对我来说, 要么参数是在配置文件中,使用 @Value 注入, 要么 另外加 set 接口设进去
fivesmallq
2020-07-10 11:14:21 +08:00
使用 ApplicationContext 的方法获取 bean,context.getBean(clazz,args); SpringContextHolder.getBean(XXX.class, arg1, arg2);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688412

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX