java-springboot-newinstance

This is one of the ways to get a new instance of a type everytime we request for it from a singleton scoped instance.

@Lookup Informs spring container to getBean from method decorated with this annotation.

Creating a method in configuration class so that it can be used anywhere configuration is injected.

//ApplicationConfiguration.java
@Lookup
public UserDTO getUserDTOProtoTypeBean() {
    return null;
}

Make sure the UserDTO class is decorated with @Scope("prototype"). Now in your consuming class call this method when you need a new instance.

@Component
public class UserMapper {

    @Autowired
    ApplicationConfiguration appConfig;

    public UserDTO ToDto(User userEntity) {
        var UserDTO = appConfig.getUserDTOProtoTypeBean();
        ...
    }
}

Code On!