程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 詳析Spring中依附注入的三種方法

詳析Spring中依附注入的三種方法

編輯:關於JAVA

詳析Spring中依附注入的三種方法。本站提示廣大學習愛好者:(詳析Spring中依附注入的三種方法)文章只能為提供參考,不一定能成為您想要的結果。以下是詳析Spring中依附注入的三種方法正文


媒介

平凡的java開辟中,法式員在某個類中須要依附其它類的辦法,則平日是new一個依附類再挪用類實例的辦法,這類開辟存在的成績是new的類實例欠好同一治理,spring提出了依附注入的思惟,即依附類不由法式員實例化,而是經由過程spring容器幫我們new指定實例而且將實例注入到須要該對象的類中。依附注入的另外一種說法是“掌握反轉”,淺顯的懂得是:平凡我們new一個實例,這個實例的掌握權是我們法式員,而掌握反轉是指new實例任務不由我們法式員來做而是交給spring容器來做。

在Spring中依附注入有四種方法

     1、set注入(平日也叫屬性注入)

     2、結構函數注入

     3、接口注入(這個如今根本不消)

     4、注解注入(@Autowire)

上面對set辦法注入,結構函數注入,和注解注入的用法舉例解釋。

1、set辦法注入(屬性注入)

UserDao.java

public class UserDao{
 public void inserUser(User user){
  //詳細邏輯省略
 }
}

UserService.java

public Interface UserService{
 void inserUser(User user);
}

UserServiceImpl.java

public class UserServiceImpl implements UserService{
 private UserDao userDao;
 public void setUserDao(UserDao userDao){
  this.userDao = userDao;
 }
 public void insertUser(User user){
  userDao.insert(user);
 }
}

Spring設置裝備擺設文件

<?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-2.5.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
 <!--省略一些有關的設置裝備擺設書寫-->
 <bean id="userDao" class="UserDao"></bean>
 <bean id="userService" class="UserServiceImpl">
 <property name="userDao" ref="userDao">
 </bean>
 </beans>

以上便可以把userDao注入到UserServiceImpl中

2、結構函數注入

User.java

public class User{
 //為了輕便,就寫兩個屬性
 private String name;
 private Integer age;
 //關於name,age的getter/setter辦法省略
 public User(String name,int age){
  this.name = name;
  this.age = age;
 }
}

如今經由過程Spring設置裝備擺設文件來注入這User這個對象

<?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-2.5.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
 <!--省略一些有關的設置裝備擺設書寫-->
 <bean id="user" class="User">
  <!--結構函數參數的下標從0開端(防止湧現多個結構函數具有雷同的參數個數)-->
  <constructor-arg type="java.lang.String" index="0" value="zhangsan"/>
  <constructor-arg type="java.lang.Integer" index="1" value="20>
 </bean>
 </beans>

以上便可以將屬性值注入到User對象中。固然假如想以set辦法注入的例子話,其實也一樣。就是在UserServiceImpl須要結構函數,形參就是userDao了,就不須要setter辦法了。

那末關於其Spring的設置裝備擺設文件的書寫應當改成如許

<?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-2.5.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
 <!--省略一些有關的設置裝備擺設書寫-->
 <bean id="userDao" class="UserDao"></bean>
 <bean id="userService class="UserServiceImpl">
  <!--結構函數參數的下標從0開端(防止湧現多個結構函數具有雷同的參數個數)-->
  <constructor-arg index="0" ref="userDao">
 </bean>
 </beans>

如許也能完成下面set辦法注入到達的後果

3、注解注入

我沒試過在這些類上不加@Component,@Service,@Controller等直接@Autowire,能否能勝利注入,不外養成一個比擬好的編程習氣,建議在響應的條理加上響應的注解。以下例子中UserDao屬於Modul層,在Spring中可以用@Component注解

UserDao.java

@Component
public class UserDao{
 public void inserUser(User user){
  //詳細邏輯省略
 }
}

UserService.java

public Interface UserService{
 void inserUser(User user);
}

UserServiceImpl.java

//引入響應的Spring包
@Service
public class UserServiceImpl implements UserService{
 @Autowire
 private UserDao userDao;
 public void insertUser(User user){
  userDao.insert(user);
 }
}

Spring對應的設置裝備擺設文件

<?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-2.5.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
 <!--省略一些有關的設置裝備擺設書寫-->
 <!--*代表對一切的包停止掃描,在現實開辟中可以依據觸及到注解組件的包停止掃描-->
 <context:component-scan base-package="*">
<!-- 開啟組件掃描 -->
</context:component-scan>
<context:annotation-config>
<!--開啟注解處置器-->
</context:annotation-config>

 <bean id="userDao" class="UserDao"></bean>
 <bean id="userService" class="UserServiceImpl"/>
 </beans>

不外在開辟進程中既開啟了set辦法注入,有開啟了注解注入的話,Spring會首選set注入的,所以不忘了供給響應的set辦法的,不然會湧現掉敗。

經由過程比擬,注解注入要比其他注入要便利的多,代碼和設置裝備擺設文件也寫的少,在開辟的進程中照樣建議應用注解注入。

總結

以上就是關於Spring中依附注入的幾種方法的全體引見,願望能對年夜家的進修或許任務帶來必定的贊助,假如有疑問年夜家也能夠留言交換,感謝年夜家對的支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved