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:反射机制?