Spring框架(一)

目录

1.IOC和DI

1.1DI的两种用法

1.2IOC和DI的区别

2.bean的操作

3.spring注解开发

4.spring在web中的应用

5.junit测试

 

需要的基本jar包  

  

 

一、IOC和DI

 (1)IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。

  本来由我们自己创建实例化对象,现在交给spring来管理。

  测试用例:

//(1)在application.xml配置文件中配置bean
<bean id="Admins" class="dao.Admin"></bean>   //id:是调用的名称。  class:是javabean的全包路 //(2)测试:使用Juint测试 //使用org.springframework的包,进行获取application.xml文件。 ApplicationContext ap = new ClassPathXmlApplicationContext("spring/application.xml"); //使用 .getBean("") 的方法,获取到对应的javabean Admin bean = (Admin) ap.getBean("Admins");  //交给spring进行实例化对象

 

 (2)DI—Dependency Injection,即“依赖注入”。

    由容器在运行期间,动态的将某个依赖关系注入到组件中。

 

  依赖注入的两种用法

     (1)Setter注入

    1、普通注入

//name : 是javabean的属性名称。 value : 是赋值
<bean id="Admins" class="dao.Admin"> <property name="username" value=""></property> </bean>

     2、List注入

//可以存入多个值, 也可以使用 ref 导入其他的bean
<bean id="Admins" class="dao.Admin"> <property name="ms"> <list> <value>灿灿</value>  (1)直接注入 <ref bean="password"/>(2)外链注入 </list> </property> </bean>

    3、map注入

 //nap注入。有三种方式。
<property name="ms">//属性名。
<map> <entry key="" value=""></entry> //(1)键、值
<entry key="" >  //(2)键、外链值 <ref bean=""/> </entry>
   //(3)外链键、外链值 <entry key-ref="" value-ref="" ></entry> </map>

    4、propertie注入

<property name="ms">
<props>  //键是key 值写在里面 <prop key=""> </prop> </props>
</property>

 

    (2)构造注入:

//注意构造的注入,要根据构造函数的参数的多少。要输入对应的值。
//还有 type、ref等属性可以使用
<bean id="Admins" class="dao.Admin"> //(1)直接存入的值,默认从第一个参数存入 <constructor-arg value="99999"></constructor-arg> //(2)使用index进行构造函数的参数的定位。 <constructor-arg index="1" value="huang"></constructor-arg>
</bean>

返回顶部

 

  IOC和DI的区别

    IOC:是指对象实例化的权利交给spring容器来管理

     DI:在spring创建bean对象的过程中,动态的将对象所依赖的属性通过配置注入对象中。

 

二、spring中bean的操作

  Bean的实例化

   (1)无参构造器

    Javabean类中,如果有有参构造器。则一定要把无参构造器写上。

 

   (2)静态工厂方法: 

    定义一个工厂类,工厂类中提供一个静态的static。并返回bean对象的方法。(不常用)

//id 调用名称;  class 静态工厂类路径; factory-method 静态工厂的方法 
<bean id="" class="" factory-method=""></bean>

 

    (3)实例化工厂方法:

    定义一个工厂类。有非static的创建并返回bean对象。需要配置工厂。还需要配置bean(不常用)

//(1)注册bean   class : 实例化工厂类路径
<bean id="" class=""></bean> //(2)调用 id 调用名; factory-bean: 上面的id; factory-method 工厂中的方法。 <bean id="" factory-bean="" factory-method=""></bean>

 返回顶部

 

  Bean的作用域

    bean的作用域是通过scope属性来描述bean的。

 

    (1)Singleton : 单列; 代表spring容器中只有一个bean的实例 (默认的scope属性)

    (2)Prototype:  多列;   每一次从spring容器中获取时,都会返回一个新的实例。

    (3)Request:   用在web开发中,将bean对象 request. setAttribute()存储在request域中。

    (4)Session : 用在web开发中,将bean对象  session.setAttribute()存储在session域中。

 

  Bean的声明周期

 返回顶部

 

三、注解开发

  使用注解开发需要在配置文件中进行配置注解;

<!-- 开启注解开发 -->
<context:annotation-config/>
    
<!-- 在类中写了注解。还需要进行包的扫描找到 -->
<context:component-scan base-package="dao"></context:component-scan>

base-package:是扫描需要注解的包的全包名路径

 

  注解标签

  1、创建Bean的注解 

    (1)@Componet   在当前的bean不知道在那一层的时候使用

     (2)@Repository    用于dao层。

     (3)@Service        用于service层。

     (4)@Controller     用于表现层。

 

  2、注入注解

    (1)@Value("")    简单注入:

      可以在变量属性中注入,也可以在setter方法中注入。 (写在属性中,可以不创建get、set方法)

    (2)@ Autowired    复杂注入:自动装配。   (默认是根据类型来装配的。)

    (3)@ Qualifier("")  预防多个bean自动装配分别不了

    (4)@Resource(name = "") 

 

   3、其他注解  

     (1)@Scope(" ")   其实这个属性和想xml中的bean的Scope属性的配置。可以设置为 单列、多列等。

    (2)@PostConstruct   初始化;    

    (3)@PreDestroy      销毁方法;

 返回顶部

 

四、spring在web中的应用

   需要导入spring-web的jar包

  1、在web.xml中配置监听器

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

  这个ContextLoaderListener实现了servletContextListener接口,在这个监听器中,当服务器启动时,

  会找applicationContext对象,其实它是一个实现类webApplicationContext对象存入servletContext中。

 

  2、在web.xml中配置applicationContext.xml配置文件

    默认情况下,会在WEB-INF目录下找applicationContext文件。如果该路径下没有这个文件,

  则,就需要进行配置。

//classpath: 配置文件的路径。
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/application.xml</param-value>
</context-param>

返回顶部

 

 五、junit测试

   需要导入spring-text的jar包。可以进行Junit测试

@RunWith(SpringJUnit4ClassRunner.class) //使用RunWith  然后找到配置文件
@ContextConfiguration(locations = "classpath:spring/application.xml")
public class text {
    
    @Autowired  //使用动态装配进行
    ways way;   //需要装配的类
    
    @Test    //需要
    public void texting() {
        
        way.text();  //需要测试的方法。
    }
}

 返回顶部

 

 

posted @ 2020-01-01 11:03  JAHC  阅读(167)  评论(0)    收藏  举报