歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Spring注解配置實例

在spring中使用注解配置前需要先在配置文件指定需要掃描的包。通過注解的方式依賴注入,可以不用創建set方法,也不用在xml文件中申明注入關系。

實例結構如下:

整個流程是:

先創建好數據庫的表對應的持久類“User”。再定義好數據層和業務邏輯層的接口。

在測試類中,獲取bean容器中具體的業務邏輯實現類實例(UserServiceImpl),往裡面傳一個user參數,之後UserServiceImpl對象將參數經過處理再傳給數據層實現類(UserDaoImpl),這個UserDaoImpl是框架注入到UserServiceImpl中的。

beans.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:util="http://www.springframework.org/schema/util"
       xmlns:p="http://www.springframework.org/schema/p" 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/util
       http://www.springframework.org/schema/util/spring-util-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--開啟注解功能,指定可掃描的包-->
    <context:component-scan base-package="com.springdemo" />
    <context:component-scan base-package="java" />

    <!--注冊一個UserDaoImpl對象,實例名為“u”-->
    <bean id="userDao" class="com.springdemo.dao.impl.UserDaoImpl"/>

    <!--注冊一個UserServiceImpl對象,實例名為“userService”-->
    <bean id="userService" class="com.springdemo.service.impl.UserServiceImpl"/>
</beans> 

User.java:

/**
 * Created by CLY on 2016/12/26.
 */
//持久化類,這個類對應的是數據庫裡的user表,該表有name和age這兩個字段。
public class User {
    private String name;
    private int age;

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

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }
} 

UserDao.java:

import com.springdemo.entity.User;

/**
 * Created by CLY on 2016/12/26.
 */
public interface UserDao {
    //創建了個demo接口方法,供實體類實現。這個方法本來的作用是:“獲取user對象,將用戶信息存入數據庫”
    public void save(User user);
} 

UserDaoImpl.java:

import com.springdemo.dao.UserDao;
import com.springdemo.entity.User;

/**
 * Created by CLY on 2016/12/26.
 */
public class UserDaoImpl implements UserDao {

    //實現UerDao接口的save方法
    public void save(User user) {
        //本來是要將作為參數傳入的“user持久化類”的對象存入數據庫的,但此處主要是突顯依賴注入,所以就忽略具體的操作了。
        System.out.print("用戶名:"+user.getName()+"   年齡:"+user.getAge());
    }
} 

UserService.java:

import com.springdemo.entity.User;

/**
 * Created by CLY on 2016/12/26.
 */
public interface UserService {

    //mvc框架中的“控制器”會將User對象傳給service層的這個方法。(因為是測試,就忽略控制器了)
    // 該方法負責對user對象進行一些業務邏輯的處理,之後傳給dao層。
    public void add(User user);
} 

UserServiceImpl.java:

import com.springdemo.dao.UserDao;
import com.springdemo.entity.User;
import com.springdemo.service.UserService;

import javax.annotation.Resource;

/**
 * Created by CLY on 2016/12/26.
 */
public class UserServiceImpl implements UserService{

    @Resource(name = "userDao")//使用注解配置,將id為“userDao”的bean注入到“userDaoImpl”裡面
    private UserDao userDaoImpl;//定義dao層的“接口”

    public void add(User user) {
        /*
        * 將控制器傳過來的user對象傳給dao層。
        * 此處體現的是面向接口編程。好處就是:當該接口的具體實現類改變時,並不需要修改此service中的代碼,因為service操作的是接口的方法*/
        userDaoImpl.save(user);
    }
} 

Test.java:

import com.springdemo.entity.User;
import com.springdemo.service.impl.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by CLY on 2016/12/26.
 */
public class Test {
    //測試UserServiceTest的add方法
    public static void main(String args[]){
        //創建spring容器,將beans的配置文件裝載進容器。
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        //通過容器的getBean()方法,獲取具體的bean實例(參數是bean的id名)。
        UserServiceImpl service = (UserServiceImpl)ctx.getBean("userService");

        User u =new User();
        u.setName("小明");
        u.setAge(18);

        service.add(u);
    }
}

Copyright © Linux教程網 All Rights Reserved