Java Bean
Java Bean是一种java开发标准。它要求类必须是具体的和公共的,并且具有无参数的构造器。Java Bean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,可用set和get方法获取属性。
get和set方法也称为Getter和Setter.
Bean
Spring当中也有Bean的概念。spring当中的bean的要求和JavaBean是一样的,都要求类有一个无参构造函数并且是公共的,同时还有getter和setter方法。
Spring通过扫描@Bean
注解将Bean放进IoC容器中以便管理。
IoC、DI、IoC容器
IoC容器是Spring的核心功能。IoC(控制反转)是面向对象中的一个设计原则,用于降低程序代码之间的耦合度。传统开发方法中,需要通过new来获取对象,而通过IoC由Spring自动初始化对象。将控制权限由应用程序转换为Spring,这就是控制反转。Ioc容器就是管理这些对象的容器。
DI(动态注入)是指IoC容器在运行期间动态地将某种依赖资源注入到对象中。
几个常用的注解
@Component
、@Service
、@Repository
、@Controller
这四个注解的作用都是将某个类视为Bean放在IoC容器中,如果一个类被上面注解中的一个注解标注则可以通过@Autowired
注解从IoC容器中取出。
这四个注解的功能是一样的,主要用于区分类的用途。
-
@Component
表示该类是软件的一个组成部分 -
@Service
表示该类是一个服务类(XXXService.java) -
@Repository
表示该类是一个DAO类(XXXDao.java) -
@Controller
表示该类是一个控制器(XXXController.java)(关于控制器会在后面的教程中讲到)
@Autowired
和@Resource
可以通过这两个类从IoC中取出已经装配的Bean。这两个注解的区别是:
-
@Autowired
默认按照类型装配,如果IoC容器中有多个同一类型的Bean,那么会报错,此时需要@Qualifier
注解进行限定,指定注入的bean名称。 -
@Resource
默认按照名称装配,也可以按照类型装配。- 如果按照名称装配需要指定name属性,name属性表示装配的对象名。如果没有指定name属性则会按照默认对象名查找(默认对象名是类名的开头字母小写形式),如果都没找到则按照类型查找。
-
@Resource
也提供了type属性进行类型查找。
-
@Autowired
是Spring提供的而@Resource
是Java自带的
对于一个类型一个bean的项目来说使用@Autowired
更方便。
网友评论