Well, the key here is familiarity. IMHO, the only way to achieve familiarity is by practice- use Spring, Hibernate, etc. and you will increase your knowledge about them. One of the strengths of the Java ecosystem is the great number of libraries/frameworks which come with great documentation- Spring's reference manual is excellent and reading it will teach you most of what there's to know about Spring, for instance.
In the end, programming is programming, and Java is yet another object-oriented imperative language and it's pretty similar to what you have been doing- esp. C#. The big thing that you might not be using to its full extent is your IDE. Java being a statically-typed language and very amenable to code manipulation can offer you some IDE features which often work better than dynamical languages- automated refactoring, better code complete, better assistence (i.e. Eclipse's ctrl+1 shortcut, it can do stuff such as:
- infer the type of an expression and create a variable of the correct type and assign the expression to it
- extract a code fragment to a method, inferring the parameters and return type of the method and replacing it by an invocation
- rename variables and classes
, you also have some niceties such as ctrl+shift+up extending a selection syntactically). Of course if you did Java before or used Visual Studio, you might have already done some of this.
Also I would mention that Spring has "convention-over-configuration" in places- esp. it's MVC module, which can automatically pick up your controllers, etc. if you put them in the right place ( http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-coc ).