You are dating... or married to... a profoundly insensitive man. Not a bad man. Not a cruel man. Just an insensitive and dense man.
If you want him to be more sensitive and generous, you're going to need to help him, because he's clearly not able to do it on his own. The first step is to have a conversation with him. Sit him down and tell him that you have been feeling very disappointed over the past few months or years. Tell him specifically why, and don't hold back: holidays are painful, you haven't felt special, you wish he would give you thoughtful gifts... tell him all of it.
The next step, and it should immediately follow the first, is to let him know that you're not angry, but you want the situation to change. Ask him what kind of help he would need to be more thoughtful, like a wishlist of gifts or a reminder that holidays are coming up. Then ask him if he would be willing to give it all a try because it is important to you.
The final (and toughest) step is to appropriately set your expectations. Your man has behaved this way for a long time. And learned behavior, however terrible, takes a while to fix. He is going to relapse into insensitivity from time to time. Or, more heartrendingly, he might not change at all. He could be so stuck in his ways that, even though he knows he's hurting you, he just won't prioritize making you feel special. And if that's the case, you might want to consider finding a nicer guy.
Believe me when I say that there are plenty of them out there.