I'm up in arms here

Idk what to do anymore... I know no relationship is perfect and I'm ok with that. But this is just idk feeling like too much anymore. I had a little boy when I was 20. I started to date my now husband when my son was 6 months old. My husband is all my son knows as dad. My husband was a friend from high school so he was always there even before we started to date. My son is 5 now, we obviously got married, we have a daughter together she's a little over 1 and now we have another little girl on the way due in a few months. Now don't get me wrong I love my husband and we've been through a lot we bought a house togethe, we own both of our vehicles, we've been through deployments and trainings. But here's my problem... it's a problem that occurs more often than not he never changes and I'm just so up in arms about it. I don't know what to do. And talking don't solve anything. He is a very selfish person, he says all the time that the kids and I are first priority but we definitely aren't. He's very one sided to. Like he can do and say whatever he wants and act how he wants but if I do it or the kids do he loses his shit. Like he spent for his bday probably $500 for a new PS4 and some other shit. I went out at some point and bought our kids new summer clothes because they are needing them and they were on crazy sale so I figured why not, and then I bought some groceries in bulk from sams. And the total ended up being around $200... he got so mad at me for doing that. He yelled at me and flipped his lid but it was all stuff we needed and I didn't buy one single thing for myself. Usually I never buy things for myself because I'm not a materialistic person. He does this all the time. Puts things on charge cards but gets mad when I spend money on groceries. Now when it comes to our kids he's never there. Like physically yes he's there but he doesn't ever play with them. He will make their lunch and leave them in the dining room whilst he goes eat by himself in the living room to watch YouTube on his phone.. which I'm at work but he will even do it when I'm there. And it kills me I sit with my kids even if I don't eat. And my biggest Issue is my son he is so mean and so hateful to him no matter what. Always getting onto him about everything. He will want to sit on the couch with us (which there is plenty of room) but my husband will yell at him to go sit on the other couch. Which I step in saying he just wants to be close to his family he is fine. He is usually so sweet to our daughter and idk of it's because she is so young or because she is "his" but he's always been like this to my son. He swears he loves him like he loves her but I don't believe it. He blames my son for how he acts to he says whell if he wasn't such a brat I wouldn't be this way... I tell him dude he's 5 of course he acts out he's 5!!!! Yes he can be a major brat and he lies sometimes but what kid doesn't?! It's that age and I'm all for discipline but it's how you do it you cuss at them and act like you completely hate them then no that's wrong and that's what he does when I discipline my son I keep my composure even when he pushes me to the breaking point I try my hardest to never be mean or hateful I try to explain why he's in trouble and go from there. And I'm not saying I'm prefect by no means am I and I lose my patience sometimes but am easier on my younger one and I feel like a piece of crap after and go explain and apologize to my son and spend extra time with him. Idk what to do... and then my husband he is such a spoiled brat. Everything has to go his way and be in favor of him. He was sick here recently missed work and made me miss work so he could sleep and I could take of the kids. I work for family so it wasn't a big deal but it's the point he was completely helpless. And I told him if it was I who was sick I would still have to take care of the kids he'd be working. I'd still have to get up and take our son to school and get him ready in the morning. I'd still have to clean up. I was sick like a week prior and I'm pregnant so I really felt like poop and he was just mean to me and called me a big baby this that and the other and I still took care of kids and school for our son and cleaned the house and cooked food. Which I do everything as far as the kids go and the house goes. I pretty much do it all. Anything to do with bdays, parties, holidays, school, dr appointments I take care of it all. I take care of deep cleaning, kids rooms, everything for our unborn baby so far I have taken care of. I do it all... I'm just so tired of him taking me for granted and it's like the least you could do is be a good dad to my kids and it's like that's asking to much of him... and he won't ever do anything I ask or help he gets annoyed and acts like I'm asking the world outta of him and I've tried to talk to him about all this and he just gets pissed off at me and makes me feel bad and tells me to go fine mr perfect because that's obviously what I want... I love him but I hate how immature he is, and selfish and shitty he can be... I just don't know what the hell to do... part of me wants to leave but I'm not on my own financially stable enough to. And I'm pregnant so I couldn't leave by law. And I don't want to throw my marriage away but idk... sorry such a long post 😩😩😩💔💔💔💔💔