Spring配置及简述

三大框架之spring
spring是一个开源的控制反转(Inversion of Control,IoC)和面向切面(AOP)的容器框架,他的主要目的是简化企业开发。
spring配置步骤
1.把jar包导入 classpath中
lib\spring-beans.jar
lib\spring-context.jar
lib\spring-core.jar
lib\commons-logging-1.1.jar
lib\spring-expression.jar

2.写spring的配置文件applicationContext.xml文件一般放在src类路径下
<?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:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop.xsd">  
.....
</beans>


1).spring的bean中装配

//一、新建一个实体类User,生成get,set方法并把user可以通过而配置文件直接赋值

<bean id="user" class="com.lsp.spring.User">
    <property name="id" value="1"></property>
 </bean>


//二、主要是注入依赖对象

   
//方式1、
<bean id="orderDao"     class="cn.itcast.service.OrderDaoBean"/>
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
    <property name="orderDao" ref="orderDao"/>
</bean>

   //方式2、(使用内部bean,但该bean不能被其他bean使用)
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
    <property name="orderDao">
        <bean class="cn.itcast.service.OrderDaoBean"/>
    </property>
</bean>


//三、集合类型的装配
   
//新建一个实体类
public class OrderServiceBean {
    private Set<String> sets = new HashSet<String>();
    private List<String> lists = new ArrayList<String>();
    private Properties properties = new Properties();
    private Map<String, String> maps = new HashMap<String, String>();
        ....//这里省略属性的getter和setter方法
}

   
//实体类在配置文件中的bean装配
<bean id="order" class="cn.itcast.service.OrderServiceBean">
    <property name="lists">
          <list>
            <value>lihuoming</value>
         </list>
      </property>       
      <property name="sets">
         <set>
            <value>set</value>
        </set>
      </property>       
     <property name="maps">
        <map>
            <entry key="lihuoming" value="28"/>
       </map>
     </property>        
     <property name="properties">
        <props>
            <prop key="12">sss</prop>
       </props>
      </property>
</bean>

4.读取配置文件并从配置文件中获得User对象
从spring容器中得到bean
当spring容器启动后,因为spring容器可以管理bean对象的创建,销毁等生命周期,所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。从容器获取bean对象的代码如下:
ApplicationContext appContext = new ClassPathXmlApplicationContext("beans.xml");

//OrderService为被注入的类 personService是配置文件中的id
OrderService service = (OrderService)appContext.getBean("personService");

实例化spring容器
实例化Spring容器常用的两种方式:
方法一:
在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});

方法二:
在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\beans.xml“});

编写spring配置文件时,不能出现帮助信息
由于spring的schema文件位于网络上,如果机器不能连接到网络,那么在编写配置信息时候就无法出现提示信息,解决方法有两种:
1。让机器上网,eclipse会自动从网络上下载schema文件并缓存在硬盘上。
2。手动添加schema文件,方法如下: windwos->preferences->myeclipse->files and editors->xml->xmlcatalog 点"add",在出现的窗口中的Key Type中选择URI,在location中选"File system",然后在spring解压目录的dist/resources目录中选择spring-beans-2.5.xsd,回到设置窗口的时候不要急着关闭窗口,应把窗口中的Key Type改为Schema location,Key改为http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
指定Bean的初始化方法和销毁方法
在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>

如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:
<beans default-lazy-init="true“ ...>

指定Bean的初始化方法和销毁方法
<bean id="xxx" class="cn.itcast.OrderServiceBean" init-method="init" destroy-method="close"/>

ssh整合
1.加入spring的jar包
2.加入struts-spring-plugin.jar
2.在spring中配置sessionfactory
<bean name="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>

3.在web.xml中配置一个监听器,让web容器知道spring的存在
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext.xml</param-value>
</context-param>

4.把struts2的action改成spring的
annotation方式Spring
首先需要在spring的xml配置文件头信息中加入下列代码。
<beans
    //beans里面添加下面三句
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/cotext
http://www.springframework.org/schema/cotext/spring-context-2.5.xsd">
    //在beans中间加下面一句
<context:annotation-config/>
<beans>

@Autowired
作用:表示该对应的成员属性可以完成自动配置功能(默认是根据byType的)
@Qualifier

因为@Autowired默认是根据byType来自动装配注入的。当有多个相同类型的bean时,Spring就会出现异常,提示找到多个符合条件的bean,但是不知道选择哪个bean来注入。
这时我们需要另外一注解来告诉Spring用那个bean,这就是@Qualifier注解, @Qualifier使用value参数来指定注入那个bean
//表示该成员属性可以自动装配(默认根据类型byType)
//当配置文件中有多个相同类型的bean时,需要使用@Qualifier注解来说明那个bean来自动装配
@Autowired 
public void setUserDao(@Qualifier(value="u") UserDao userDao) {
        this.userDao = userDao;
}

@Resource(重要、推荐)

@Resource默认是根据byName来的,如果没有找到相同的名称再根据byType,当然也可以指定bean的name如下:
@Resource(name="u2")
public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}

注意:一般使用@Resource而不会使用@Autowired
@Componet

以上使用@Autowired、@Resource注解时,还是需要在xml文件配置bean,这样就达不到完全使用annotation进行注解。因此现在引用@Component在那个bean前进行注解,表示那个类是需要的bean。有了@Componet注解,这样就不需要在xml文件中配置bean了。
<context:annotation-config/>
<context:component-scan base-package="com.lsp"/>
<!—不需要配置bean了-->
bean类中需要使用@Componet(或@Service、@Repository、@Controller)注解这个类是bean。—不需要配置bean了-->
bean类中需要使用@Componet(或@Service、@Repository、@Controller)注解这个类是bean。


第一篇 格式问题还有内容 都多包涵哈

你可能感兴趣的:(spring)