Spring-注入方式
Spring設計理念
面向Bean的程式設計 框架的特點:把程式碼轉化為配置檔案
Spring兩大核心技術:AOP和IOC
Spring的優點
- 低侵入式設計
- 獨立於各種應用伺服器
- 依賴注入特性將元件關係透明化,降低了耦合度
- 面向切面程式設計特新允許將通用任務進行集中式處理
- 與第三方框架的良好整合
注入方式
set方法注入
Student類必須有set方法和無參構造方法
<bean id="s" class="com.pojo.Student">
<property name="sutName" value="cuihua"></property>
<property name="age" value="28"></property>
</bean>
public static void main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplication("ApplicationContext.xml");
Student student = ctx.getBean(Student.class);
//如果出現了兩個Student類的話,只能根據bean的id來獲取
Student student = ctx.getBean("s1");
}
構造方法注入
<bean id="s" class="com.pojo.Student">
<property name="sutName" value="cuihua"></property>
<property name="age" value="28"></property>
</bean>
<bean id="userDao" class="dao.impl.userDaoImpl"/>
<bean id="userService" class="service.impl.UserServiceImpl">
<constructor-arg><ref bean="userDao"/></constructor-arg>
<constructor-arg value="cuihua"></constructor-arg>
<constructor-arg value="18"></constructor-arg>
</bean>
<bean id="s2" class="com.pojo.Student">
<constructor-arg value='cuihua' index="0"></constructor-arg>
<constructor-arg value='98' index="1"></constructor-arg>
<constructor-arg value='18' index="2"></constructor-arg>
</bean>
- 一個<constructor-args>元素表示構造方法的一個引數,且使用時不區分順序
- 通過<constructor-args>元素的index屬性可以指定該引數的位置索引,位置從0開始
- <constructor-args>還提供了type屬性用來指定引數的型別,避免字串和基本資料型別的 混淆
設定注入 | 構造注入 |
通過setter訪問器實現 | 通過構造方法實現 |
靈活性好,但setter方法數量較多 | 靈活性差,僅靠過載限制太多 |
時效性差 | 時效性好 |
通過無參構造例項化 | 通過匹配的構造方法例項化,但建議保留無參構造 |
特殊符號的處理:
<bean id="p" class="com.pojo.Person">
<constructor-arg>
<value><![CDATA[&&打算]]></value>
</constructor-arg>
</bean>
需要把value提成是子標籤,然後使用<![CDATA[]]>把特殊字元包括起來
p標籤
<bean id="s2" class="com.pojo.Student" p:stuName="aa" p:age="18"></bean>
引入外部bean
<bean id="car" class="com.pojo.Car" p:brand="BMW" p:price="400000" p:speed="260"></bean>
<bean id="s" class="com.pojo.Student">
<!--set注入-->
<property name="stuName" value="cc"></property>
<property name="age">
<value>20</value>
</property>
<property name="car" ref="car"></property>
</bean>
內部bean使用得情況比較少
使用註解實現bean的裝配
<!--自動掃描使用註解的包-->
<context:component-scan base-package="com.pojo"></context:component-scan>
@Component
public class Student{
public void study(){
System.out.println("學生正在學習");
}
}
props注入
public class DataSource{
private Properties properties;
}//省略setter和getter方法
<bean id="datasource" class="com.pojo.DataSource">
<property name="properties">
<props>
<prop key="driver">com.mysql.jdbc.Driver</prop>
<prop key="url">jdbc:mysql://localhost:3306/stu</prop>
<prop key="username">root</prop>
<prop key="password">123456</prop>
</props>
</property>
</bean>
相關文章
- Spring-註解注入Spring
- spring- properties 讀取的五種方式Spring
- Spring-讀取配置Spring
- spring的四種注入方式Spring
- Spring-宣告式事務Spring
- 【framework】spring-註解(annotation)FrameworkSpring
- Spring注入Bean的幾種方式SpringBean
- SpringBoot注入資料的方式Spring Boot
- Spring的依賴注入的方式Spring依賴注入
- Spring中bean的四種注入方式SpringBean
- Spring IOC三種注入方式比較Spring
- 四、Spring-面向切面程式設計Spring程式設計
- Spring-全域性異常攔截Spring
- SpringDI四種依賴注入方式詳解Spring依賴注入
- .NetCore中三種注入方式的思考NetCore
- spring常用的三種依賴注入方式Spring依賴注入
- @Resource,@Autowired,@Inject3種注入方式詳解
- 通過代理的方式讓Spring注入ServletSpringServlet
- Spring的三種依賴注入的方式Spring依賴注入
- Laravel 依賴注入方式驗證表單欄位Laravel依賴注入
- PHP 安全輸入輸出方式 「防止 XSS 注入」PHP
- Java Spring 中你不知道的注入方式JavaSpring
- 通過註解的方式向DAO中注入SessionfactorySession
- Spring6框架中依賴注入的多種方式(推薦構造器注入)Spring框架依賴注入
- .net core番外第2篇:Autofac的3種依賴注入方式(建構函式注入、屬性注入和方法注入),以及在過濾器裡面實現依賴注入依賴注入函式過濾器
- 在WPF中使用依賴注入的方式建立檢視依賴注入
- 逆向淺析常見病毒的注入方式系列之一-----WriteProcessMemorySSM
- 不用注入方式使用Spring管理的物件中的方法,神奇Spring物件
- Spring注入:配置注入(set注入和構造器注入)與註解注入Spring
- 從Hessian RPC 註解方式看Spring依賴注入RPCSpring依賴注入
- 【Java面試】Spring中有哪些方式可以把Bean注入到IOC容器?Java面試SpringBean
- SQL 注入:聯合注入SQL
- sql注入之union注入SQL
- 程式注入之DLL注入
- Spring學習日記01_IOC_xml的三種注入方式SpringXML
- spring中通過constructor來注入引數的四種方式SpringStruct
- Spring依賴注入的兩種方式(根據例項詳解)Spring依賴注入
- 如何用最簡單的方式解釋依賴注入?依賴注入是如何實現解耦的?(通俗易懂)依賴注入解耦