首先先了解其中的註解都是做什麼的,用在什麼地方:
@Autowired 自動按照類型依賴注入,可以對成員變量,方法及構造函數進行標註
@Resource 自動按照名稱依賴注入,可以對成員變量,方法及構造函數進行標註
@Controller 通常標註控制層
@Service 通常標註業務層
@Repository 通常標註數據訪問層(DAO)
@Component 泛指組件,用於不好分類是的標註
@Scope bean的作用域(property)
下面是基於Set方法的例子:
D層的實現類:
package com.spring.dao;
import org.springframework.stereotype.Repository;
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Override
public void addUser() {
System.out.println("addUser");
}
}
Service的實現類:
package com.spring.service;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.spring.dao.UserDao;
@Service("userService")
public class UserServiceImpl implements UserService {
private UserDao userDao;
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void addUser() {
userDao.addUser();
}
}
Client類:
package com.spring.client;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.config.ApplicationConfig;
import com.spring.service.UserService;
import com.spring.service.UserServiceImpl;
public class Client {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicatioinContext=
new AnnotationConfigApplicationContext(ApplicationConfig.class);
UserService userService=
applicatioinContext.getBean("userService",UserService.class);
userService.addUser();
}
}
配置類:
package com.spring.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages={"com.spring"})
public class ApplicationConfig {
}