1. 程式人生 > >spring @component 詳解

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=”com.mmnc”>   
其中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
找不到匹配的 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();     } @Authwired註解也可以應用在陣列型別的屬性上, 此時 Spring 將會把所有匹配的 Bean 進行自動裝配.@Authwired註解也可以應用在集合屬性, 此時 Spring 讀取該集合的型別資訊, 然後自動裝配所有與之相容的 Bean. @Authwired註解用java.util.Map上時, 若該 Map 的鍵值為 String, 那麼 Spring 將自動裝配與之 Map 值型別相容的 Bean, 此時 Bean 的名稱作為鍵值