spring@component详解
1、@controller 控制器(注⼊服务)
2、@service 服务(注⼊dao)
3、@repository dao(实现dao访问)
4、@component (把普通pojo实例化到spring容器中,相当于配置⽂件中的<bean id="" class=""/>)
@Component,@Service,@Controller,@Repository注解的类,并把这些类纳⼊进spring容器中管理。
下⾯写这个是引⼊component的扫描组件
<context:component-scan base-package=””>
其中base-package为需要扫描的包(含所有⼦包)
1、@Service⽤于标注业务层组件
2、@Controller⽤于标注控制层组件(如struts中的action)
3、@Repository⽤于标注数据访问组件,即DAO组件.
4、@Component泛指组件,当组件不好归类的时候,我们可以使⽤这个注解进⾏标注。
@Service public class UserServiceImpl implements UserService { }
@Repository public class UserDaoImpl implements UserDao { } getBean的默认名称是类名(头字母⼩写),如果想⾃定义,可以
@Service(“***”) 这样来指定,这种bean默认是单例的,如果想改变,可以使⽤@Service(“beanName”) @Scope(“prototype”)来改变。可以使⽤以下⽅式指定初始化⽅法和销毁⽅法(⽅法名任意): @PostConstruct public void init() { } ⼆把属性注⼊到类 1.该实例可以⾃动装配具
有@Autowired和 @Resource 、@Inject注解的属性. 以
@Autowired 为例⼦ 1
•
Autowired
注解⾃动装配
具有兼容类型
的单个
Bean
属性
–
构造器
,
普通字段
(
即使是⾮
public),
⼀切具有参数的⽅法都可以应⽤
@
Authwired
注解
–
默认
情况下
,
所有使⽤
@
Authwired
注解的属性都需要被设置
.
当
Spring
Spring
不到匹配的
Bean
装配属性时
,
会抛出异常
,
若某⼀属性允许不被设置
,
可以设置
@
Authwired
注解的
required
属性为
false
–
默认
情况下
,
当
IOC
容器⾥存在多个类型兼容的
Bean
时
,
通过类型的⾃动装配将⽆法⼯作
.
此时可以在
@Qualifier
注解⾥提供
Bean
的名称
.
Spring
允许对⽅法的⼊参标注
@
Qualifiter
已指定注⼊
Bean
的名称
@Service
public class UserService {
@Autowired
@Qualifier("userRespositoryImp")
private UserRespository userRespository;
public void save(){
System.out.println("UserService save()...");
userRespository.save();
}
UserRespository是⼀个接⼝,当两个以的类现在这个接⼝时,只⽤ @Autowired private UserRespository
userRespository; 注⼊属性会报错的。要使⽤@Qualifier()具体的标识那⼀个现实类的属性使⽤⽅法 @Autowired @Qualifier("userRespositoryImp") private UserRespository userRespository;
–
@
Authwired
Authwired
注解也可以应⽤在
数组类型
的属性上
,
此时
Spring
将会把所有匹配的
Bean
进⾏⾃动装配
.
–
@
Authwired
注解也可以应⽤在
集合属性
上
,
此时
Spring
读取该集合的类型信息
,
然后⾃动装配所有与之兼容的 Bean.
–
@
Authwired
注解⽤
在
java.util.Map
上时
,
若该
spring ioc注解Map
的键值为
String,
那么
Spring
将⾃动装配与之
Map
值类型兼容的
Bean,
此时
Bean
的名称作为键值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论