How to add input type to boxplot but remain its plot attribute

Based on Oheil’s codes (StackOverflowError with boxplot!() due to deprecation), I wish to add other optional plot attributes like label, dpi etc. I’ve tried to include them in the input in a primitive way as below but the input labels are still not employeed (so I commented them out)…Is there any way to add an input type to boxplot() without mining its original flexible plot attributes?

using StatsPlots
a=[ 0.000163187  0.000121895  0.000229244  6.98374e-6
         missing      missing      missing      missing
        0.000347736  0.000385244  0.00025956    missing]
import StatsPlots.boxplot
function boxplot(m::Array{Union{Missing, Float64}}; labels::Array{String})
	bp=boxplot(dpi=300)
	# bp=boxplot(dpi=300,label=labels)
    for i in 1:size(m,2)
		bp=boxplot!(filter(!ismissing,m[:,i]))
		# bp=boxplot!(filter(!ismissing,m[:,i]),label=labels)
    end
    display(bp)
end

boxplot(a, ["1", "2", "3", "4"])

I found the description of @recipe (https://docs.juliaplots.org/latest/recipes/#Recipe-Types) but haven’t figured out whether it’s what I am looking for or how to apply it in this case.

The recipe type is determined completely by the dispatch signature. Each recipe type is called from a different part of the plotting pipeline, so you will choose a type of recipe to match how much processing you want completed before your recipe is applied.”