spring註解實現IOC

Spring註解實現


配置spring.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">

    <!-- annotation 註解開啓 -->
    <context:annotation-config/>
    <!--  告知spring去哪個包,查找註解-->
    <context:component-scan base-package="com.zx.spring"></context:component-scan>

</beans>

model層:

創建一個User模式

public class User {

    private String name;

    public String getName() {
        return name;

    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

dao層:

在spring 中 採用 @Repository 來註解dao層實現類。

IUserDao接口

public interface IUserDao {
    public void addUser(User user);
}

IUserDao的實現:

UserHiberDao

@Repository("userHiberDao")
public class UserHiberDao implements IUserDao{
    @Override
    public void addUser(User user) {
        System.out.println("Hiber正在添加:"+user);
    }
}

UserJdbcDao

@Repository("userJdbcDao")
public class UserJdbcDao implements IUserDao{
    @Override
    public void addUser(User user) {
        System.out.println("Jdbc正在添加:"+user);
    }
}

service層

service層採用 @Service 註解,上下依賴採用 @Resource在setter方法上添加註解。

IUserService 接口

public interface IUserService {
    public void addSucess(User user);
}

接口的實現

@Service("userService")
public class UserService implements IUserService{
    private IUserDao userDao;
    @Override
    public void addSucess(User user) {
        userDao.addUser(user);
    }
    //上下依賴的註解,當需要使用userHiberDao添加數據,將依賴注入設置爲@Resource(name = "userHiberDao")
    @Resource(name = "userJdbcDao")
    public void setUserDao(IUserDao userDao) {
        this.userDao = userDao;
    }
}

Controller層

在Controller層採用 @Controller() 註解,上下依賴也採用 @Resource 在setter方法上添加註解

@Controller("userAction")
public class UserAction {
    private IUserService userService;

    public String save(User user){
        userService.addSucess(user);
        return "sucess";
    }

    @Resource(name = "userService")
    public void setUserService(IUserService userService) {
        this.userService = userService;
    }
}

測試

public class SpTest {

    /**
     * /**
     * Spring  IOC(控制反轉)
     * 將控制管理權不由JavaBean管理,交給Spring容器管理
     *
     * DI 依賴注入
     * --分層
     *      --上層依賴於下層
     *      --下層服務於上層
     *
     *
     *
     * Created by Administrator on 2018/1/18.
     */


    @Test
    public void test01(){
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring.xml");

        UserAction  userAction= beanFactory.getBean("userAction", UserAction.class);

        User user1 = new User();
        user1.setName("大數據");
        User user2 = new User();
        user2.setName("人工智能");

        userAction.save(user1);
        userAction.save(user2);


    }
}


image_1c49bl245165pfoc129c2i039tm.png-33.8kB

發佈了72 篇原創文章 · 獲贊 16 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章