2017-10-20
1:有關<property name="" ref="">理解和解釋?
1.1<bean id="persion" class="service.Person">
<property name="axe" ref="axe"> </person>
:這裏的name和ref雖然是同名的但是name是指Person類中的參數,Person類中有一個Axe類型名叫axe的對象,而ref是當前xml文件中叫做axe的這個bean,把它當作參數傳 進Person中.
</bean>
爲什麼要使用<property name="" ref=""></property>中的ref?
答:
2、有關spring格式,概念的理解?
項目中有多少個bean類(包含數據庫字段名的屬性,每個屬性包含get和set方法),在spring中就必須配置多少個<bean></bean>
3、spring裏面的bean爲什麼要註冊,作用是什麼?
3.1:它註冊了,就相當於聲明瞭某個類實例化了,你就不需要再在程序裏實例化這個類了,直接用就可以了;幾乎Java中的所有框架都需要通過配置文件讀取,註冊之後程序運行時就直接讀取配置去找類和方法,而不是之前那種一個類一個類導入的方式。
3.2:<!--使用set方法注入屬性值-->
在類中:
package cn.itcast.property;
public class Book{
private String bookname;
//set方法
public void setBookname(String bookname){
thhis.bookname=bookname;
}
}
在spring的配置文xxx.xml裏面:
<bean id="book" class=" cn.itcast.property.Book">
<property name="bookname" value="java編程思想"></property>
</bean>
3.3 <!--注入對象類屬性-->
在類中:
UserDao類:
package cn.com
public class UserDao{
public void add(){
system.out.println("dao add.......");
}
}
UserService類:
package cn.com;
public class UserService{
private UserDao userDao; //注意屬性userDao現在是一個Dao對象了
public void setUserDao(){ //生成set方法
this.userDao=userDao;
}
public void add(){
system.out.println("service add......");
userDao.add(); //直接調用UserDao對象userDao中的add()方法【輸出將是"dao add......"】
}
}
spring配置文件xxxx.xml:
<bean id="userDao" class="cn.com.UserDao"></bean> //配置service中Dao對象
<bean>
<bean id="userService" class="cn.com.UserService"></bean>
<property name="userDao" ref="userDao"> </property> // name:service類裏面屬性名稱,ref:dao配置中bean的id值。
</bean>
3.4:注入複雜類型輸入:list,map,數組,properties[文件類型]
類中:
package cn.com;
public class Person{
private String pname;
private String[] arrs;
private List<String> list;
private Map<String,String> map;
private Properties properties;
public void setArrs( String[] arrs){
this.arrs=arrs;
}
public void setList(List<String> list){
this.list=list;
}
public void setMap(Map<String,String> map){
this.map = map;
}
public void setProperties(Properties properties){
this.properties = properties;
}
}
spring中配置文件xxx.xml:
<bean id="person" class="cn.com.Person">
<property name="arrs"> //arrs爲person類中的一個屬性,
<list> //數組注入【list注入也是一樣的,略】
<value>張三</value>
<value>李四</value>
<value>王武</value>
</list>
</property>
<property name="map"> //map注入
<map>
<entry key = "a" value="lucy"></entry>
<entry key="b" value="mary"></entry>
<entry key="c" value="juck"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
3.5;spring中的bean管理【註解】
@component:組件(作用在類上)
spring中提供@Component的三個衍生註解:
@Controller :web成
@Service :業務層
@Repository :持久層
4、spring核心概念:aop(面向切面編程)和ioc(控制反轉)。
4.1 ioc:
4.1.1:沒有ioc之前,如果我們要調用一個類中的方法,要new一個對象,然後才調用;有了spring 中的ioc,對象的創建不是通過new,而是交給spring配置【有待完善代碼】。
4.1.2:ioc底層原理使用的技術【理解:解耦合】:(1)xml配置文件(2)dom4j解決xml(3)工廠設計模式(4)反射;
4.13:IOC與DI: 1)ioc爲控制反轉,把對象創建交給spring進行配置;2)di:依賴注入,向類中的屬性注入值。
spring是一站式框架:
1)spring在javaee三層結構中,每一層都提供不同的解決技術
web層:springMVC; service層:spring的ioc;dao層:spring的jdbc Template
5:service類的作用?【遺留問題】
6:反射機制?