bushiren
V2EX  ›  Java

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

  •  
  •   bushiren · Jul 9, 2020 · 4548 views
    This topic created in 2146 days ago, the information mentioned may be changed or developed.

    `@Autowired private Test_bbs test;

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

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

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


    通过注入的方式罢了
    ixx
        13
    ixx  
       Jul 9, 2020
    @bushiren #11
    spring 管理的 bean 一般在容器初始化的时候就生成实例了 你注入的时候已经有实例了 如果你想在他实例化的时候指定值 哪直接在写死就行 或者放配置文件里读取
    limuyan44
        14
    limuyan44  
       Jul 9, 2020
    学习 spring 还是建议从基础开始学起,不然以后坑的是自己。
    heyjim75111
        15
    heyjim75111  
       Jul 10, 2020
    对我来说, 要么参数是在配置文件中,使用 @Value 注入, 要么 另外加 set 接口设进去
    fivesmallq
        16
    fivesmallq  
       Jul 10, 2020
    使用 ApplicationContext 的方法获取 bean,context.getBean(clazz,args); SpringContextHolder.getBean(XXX.class, arg1, arg2);
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1196 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 17:39 · PVG 01:39 · LAX 10:39 · JFK 13:39
    ♥ Do have faith in what you're doing.