天天看點

IOC操作Bean管理(基于注解方式)

1、什麼是注解

(1)注解是代碼特殊标記,格式:@注解名稱(屬性名稱=屬性值, 屬性名稱=屬性值..)

(2)使用注解,注解作用在類上面,方法上面,屬性上面

(3)使用注解目的:簡化xml配置 

2、Spring針對Bean管理中建立對象提供注解

(1)@Component (2)@Service (3)@Controller (4)@Repository

* 上面四個注解功能是一樣的,都可以用來建立bean執行個體 

3、基于注解方式實作對象建立 

IOC操作Bean管理(基于注解方式)
<context:component-scan base-package="想要掃描包的位置,多個逗号分開">
</context:component-scan>      

第三步 建立類,在類上面添加建立對象注解 

在注解裡面value屬性值可以省略不寫, 預設值是類名稱,首字母小寫 UserService -- userService 

@Component(value = "userService") 
//<bean id="userService" class=".."/> 
public class UserService
 {
  public void add()
 {  System.out.println("service add......."); 
  }
     }      

4、開啟元件掃描細節配置  

IOC操作Bean管理(基于注解方式)

5、基于注解方式實作屬性注入

(1)@Autowired:根據屬性類型進行自動裝配

第一步 把service和dao對象建立,在service和dao類添加建立對象注解

第二步 在service注入dao對象,在service類添加dao類型屬性,在屬性上面使用注解  

@Service 
public class UserService {
  //定義dao類型屬性 
 //不需要添加set方法 
 //添加注入屬性注解 
 @Autowired  
private UserDao userDao;  
 public void add()
 {  System.out.println("service add.......");  
userDao.add(); 
 } }      

(2)@Qualifier:根據名稱進行注入

這個@Qualifier注解的使用,和上面@Autowired一起使用 

//定義dao類型屬性 
//不需要添加set方法   
//添加注入屬性注解
 @Autowired 
//根據類型進行注入
 @Qualifier(value = "userDaoImpl1") 
//根據名稱進行注入
 private UserDao userDao;      

(3)@Resource:可以根據類型注入,可以根據名稱注入 

//@Resource //根據類型進行注入
 @Resource(name = "userDaoImpl1") 
//根據名稱進行注入
 private UserDao userDao;      
@Value(value = "abc") 
private String name;      

6、完全注解開發 

@Configuration
 //作為配置類,替代xml配置檔案 
@ComponentScan(basePackages = {"com.atguigu"})
 public class SpringConfig { }      
@Test public void testService2()
 {  //加載配置類 
 ApplicationContext context  = 
new AnnotationConfigApplicationContext(SpringConfig.class);  
 }