基于注解进行bean的装配
基于注解進行bean的裝配
Ioc容器中添加節點:context:annotation-config/
IOC通過掃描classpath中的bean(類/組件),加載到IOC中并管理,不需要把bean顯示配置到文件中。
@Component給類添加一個組件注解,意思是該類需要被ioc容器管理。
@Autowired,表示注入功能,默認是按照類型注入,如果有兩個以上的類型就會出現異常,此時可用用 @Qualifier("userService"),指定需要注入那個bean
@Resource(name="userService"):表示注入功能需要指定要被注入的bean的ID。
注解分層
@Component(""):任何類需要被管理,都可以使用該注解。
@Controller(""):標識控制器
@Service(""):標識業務層
@Repository(""):標識持久層
基于classpath實現依賴注入
<context:component-scan
base-package="包名">/context:component-scan
包名可以寫組件共有的父包。
-------------------------------------------------------------------------------------------------------------------------
?
UserDao
package com.henu.dao; ? /*** @author George* @description**/ public interface UserDao {void insert(); }UserDaoImpl
package com.henu.dao; ? import org.springframework.stereotype.Repository; ? /*** @author George* @description**/ @Repository("userDaoImpl") public class UserDaoImpl implements UserDao {public void insert() {System.out.println("userDao:insert()>>>>");} }UserService
package com.henu.service; ? /*** @author George* @description**/ public interface UserService {void insert(); }UserServiceImpl
package com.henu.service; ? import com.henu.dao.UserDao; import com.henu.dao.UserDaoImpl; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; ? import javax.annotation.Resource; ? /*** @author George* @description**/ ? @Controller("userServiceImpl") public class UserServiceImpl implements UserService { ?@Resource(name = "userDaoImpl")public UserDao userDao; ?public void insert() {System.out.println("UserService.insert()+++++");userDao.insert();} ?public UserDao getUserDao() {return userDao;} ?public void setUserDao(UserDao userDao) {this.userDao = userDao;} }UserController
package com.henu.controller; ? import com.henu.service.UserService; import org.springframework.stereotype.Component; ? import javax.annotation.Resource; ? /*** @author George* @description**/ @Component("userController") public class UserController {@Resource(name = "userServiceImpl")public UserService userService;public void execute(){System.out.println("userController");userService.insert();} }applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> ? <!--啟動注解--><context:component-scan base-package="com.henu"></context:component-scan> ? </beans>【注】
?
Test
package com.henu; ? import com.henu.controller.UserController; import org.springframework.context.support.ClassPathXmlApplicationContext; ? /*** @author George* @description**/ public class Test {public static void main(String[] args) {//加載spring IoC配置文件//ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");//獲取控制器對象UserController bean = context.getBean(UserController.class);//ctrl + alt + v//調用控制器方法bean.execute();//關閉ioc容器context.close();} }運行結果:
userController UserService.insert()+++++ userDao:insert()>>>>總結
以上是生活随笔為你收集整理的基于注解进行bean的装配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于xml进行bean装配
- 下一篇: spring整合jdbc