1. 程式人生 > >Spring三種注入屬性的方式

Spring三種注入屬性的方式

Spring三種方法注入屬性

1.        準備工作:

1)        新建Dao包,Service包

2)        在每個包內新建對應的介面,以及impl包


UserDao

public interface UserDao {
   
public void TestDao();
}

UserService

public interface UserService {
    public String testUserService();
}

3)        在impl包新增對應的實現類

UserDaoImpl

public class UserDaoImpl implements 
UserDao {     public void TestDao() {         System.out.println("This UserDaoimpl");     } }

UserServiceImpl

public class UserServiceImpl implements UserService {
private UserDao userDao;

    public String testUserService() {
        userDao.TestDao();
        return null;
    }

    public UserDao 
getUserDao() {         return userDao;     }     public void setUserDao(UserDao userDao) {         this.userDao = userDao;     } }

2.        注入屬性

1)        <property>方法

直接在配置檔案裡新增需要的屬性>

<bean id="userDaoimpl" class="com.neusoft.spring.demo.dao.impl.UserDaoImpl"/>

<bean id="userServiceImpl" 
class="com.neusoft.spring.demo.service.impl.UserServiceImpl">        <property name="userDao" ref="userDaoimpl"/> </bean>

2)        註解方法

註解是通過@Autowired來完成自動裝配工作的

a.        首先給需要注入的屬性添加註解

@Autowired
private UserDao userDao;;

b.        配置

配置方法有兩種

a)        通過類
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
b)        通過在xis裡面新增context

首先在xsi後面新增這兩個名稱空間

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

接著新增

<context:annotation-config/>

c.        最後新增bean

<bean id="userDao" class="com.neusoft.spring.demo.dao.impl.UserDaoImpl"/>
<bean id="userServiceImpl" class="com.neusoft.spring.demo.service.impl.UserServiceImpl"/>

3)        自動掃描機制注入

a.        首先給需要注入的屬性添加註解

@Autowired
private UserDao userDao;

b.        給需要自動掃描的類添加註解

@Component
public class UserServiceImpl implements UserService {
@Component
public class UserDaoImpl implements UserDao {

@Component 不確定元件屬於哪個層的時候

@Service 標註業務層元件

@Controller 標註控制層元件

@Repository 標註資料訪問層元件

c.        新增context名稱空間

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

d.        新增需要自動掃描的類

<context:component-scan base-package="com.neusoft.spring.demo.service.impl" />
<context:component-scan base-package="com.neusoft.spring.demo.dao.impl"/>

3.        測試

@Test
public void serviceTestXml(){
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    UserService userService =context.getBean("userServiceImpl", UserServiceImpl.class);
    userService.testUserService();
}

4.        結果顯示