Spring的配置分别是xml和java style

# Spring-IoC
Spring配置有两种方式xml和java style

## Spring
· spring的IoC(控制反转)就是一个工厂模式变种,<br/>
· spring核心就是IoC容器,实现这个容器的接口BeanFactory,BeanFactory是最核心的、最纯粹的<br/>
方法: <br/>
getBean() <br/>
实现类: <br/>
ApplicationContext <br/>

· 简单工厂

public class ServiceFactory() {
public Object getServiceObject(String name) {

if("bs".equals(name)) {
A a = new A();
B b = new b();
MyBatiscConnection conn = new MyBatiscConnection();
BookService bookservice = new BookService();

//同通过setter的方式来确定他们的关系是如何的
//B对象包含A对象
b.setA(a);
//MyBatiscConnection对象包B对象
conn.setB(b);
//**********__``````````__**********
bookService.setConn(conn);
log.setConn(conn);
bookservice.setLogger(log);
return bookService;

}
}

}

<li> 在调用的时候就变得了简单了</li>

public class Test () {

public static void main(String[] arge) {
ServiceFactory sf = new ServiceFactory();

BookService bookservice = sf.getSerivceObject("bs");
//然后在调用bookservice的某个方法
}
}
<li> 小结:</li>

我们在中间加了一层,虽然不用在调用的时候,创建很多的对象。但在工厂模式中代码类增加了,
我们在维护的时变得困难了。

<li> 所以后面出现了:XML文件的形式来更清晰的描述,类的创建和类与类之间的关系</li>

<!--之前是命令的形式,xml是描述的形式 -->
<xml>
<bean id="a" class="com.wgc.entity.A">
</bean>
<bean id="b" class="com.wgc.entity.B">
<property name="a" ref="a"/>
</bean>
<bean id="conn" class="org...MyBatiscConntion">
<property name="b" ref="b"/>
</bean>
<bean id="log" class="org...LogUitl">
<property name="conn" ref="conn"/>
</bean>
<bean id="bookService" class="com...BookService">
<property name="conn" ref="conn"/>
<property name="log" ref="log"/>
</bean>
</xml>

<li> 结论</li>
使用xml的文件中Bean标签配置,更加清晰的描述出类与类之间的关系。

<li>门面模式:</li>
例子:有一个工厂有很多的部门,要买东西的时候我们不可能一个一个部门去卖,所以把所以部门组合在一起,在去卖。

spring有三种方式描述
1、@Bean java类方法<br/>
2、<bean> xml<br/>
3、开启扫描的模式
@Component <br/>
@ComponentScan(basePackages="learning.spring") <br/>
@ImportResource(locations = "learning/spring/my-spring.xml") <br/>
@Service <br/>
@Controller: 这个注解@ControllerAdvice只作用在加上@Controller的类上<br/>
@Repository <br/>

4、是java代码写spring的配置

要在类的头部加上@Configuration注解
@Configuration
如果要在java类上加这个注解就是相当xml文件中<beans>

工厂模式与IoC的区别:

工厂模式在调用时才创建对象;<br/>
IoC容器在启动就创建了所有的对象(可以加属性lazy-init="true":意思是这个对象没有那么重要不着急创建),
还有所有的对象在刚刚开始都是单例模式创建了(可以加scope="prototype"修改:一般我们不会这么做,因为每次都创建一个新的对象,对内存的消耗是非常大的)

denpend-on 定义顺序(属性)
parent 定义继承(属性)
scope 定义初始化策略(属性)
lazy 延迟初始化 (属性lazy-init)
alias 定义别名(标签)
import 引入其他的定义文件(标签)

例子: <import resource="文件名"/>
<alias name="rabbits" alias="ADO"/>
或是<alias name="ADO" alias="rabbits"/>

原文地址:https://www.cnblogs.com/YouAreABug/p/10117153.html

时间: 2024-08-02 08:04:43

Spring的配置分别是xml和java style的相关文章

Spring Boot配置Mysql后无法根据java实体类生成table

https://www.imooc.com/qadetail/193270?t=292816 检查了两天,没找到问题.原因为实体类必须在主程序application的同名包或者子包下面,启动时才会扫描到.FUCK! 原文地址:https://www.cnblogs.com/nxzwcx/p/8997857.html

Spring JPA配置讲解

JPA是Java EE5规范之一,是一个orm规范,由厂商来实现该规范.目前有hibernate,OpenJPA,TopLink和EclipseJPA等实现 Spring提供三种方法集成JPA: 1.LocalEntityManagerFactoryBean:适用于那些仅使用JPA进行数据访问的项目.该FactoryBean根据 JPA PersistenceProvider自动检测配置文件进行工作,一般从“META-INF/persistence.xml”读取配置信息.这种方式最简单,但是不能

Spring MVC全注解配置 - 无web.xml

Serlvet 3以后,我们可以使用注解来配置Servlet,对于像Spring这类的框架来说是一个很好的适应.Spring也对此特性加入了很多的新功能.本文就将简单的对之前的xml配置转换为java代码的配置.代码配置让程序员们觉得更加具有流程化,不像配置很多代码程序员们都不愿意look into. 接下来,进行替换我们之前的web.xml和spring-mvc.xml的配置.也就是在你的web工程里面看不到这两个配置文件了.(可能有的童鞋会说,这样配置可能对以后的修改不方便,无法达到只修改配

Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解

原创整理不易,转载请注明出处:Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解 代码下载地址:http://www.zuidaima.com/share/1772648445103104.htm 有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz. 1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; p

[原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz

1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportTask extends TimerTask{ @Override public void run() { ... } } 在Spring定义 ... 配置Spring定时器 <bean id="scheduleReportTask" class="org.springfra

spring mybatis 整合问题Error parsing Mapper XML. Cause: java.lang.NullPointerException

14:30:40,872 DEBUG SqlSessionFactoryBean:431 - Parsed configuration file: 'class path resource [mybatis/mybatis-config.xml]'14:30:40,883  WARN XmlWebApplicationContext:489 - Exception encountered during context initialization - cancelling refresh att

使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法 获取Class类实例的方法: 类名.class 实例名.getClass() Class.forName(className) public class RefTest { @Test public void testRef(){ //Class cls = RefTest.class; //Class.forName("com.jboa.service.RefTest"); //new RefTest()

Spring讲解二:Spring中的Bean配置1---基于XML文件的方式

一.在Spring的IOC容器中配置Bean 在xml文件中通过bean节点配置bean id:Bean的名称: (1) 在IOC容器中必须是唯一的 (2) 若id没有指定,Spring自动将权限限定性类名作为bean的名字 (3) id可以指定多个名字,名字之间可以用逗号.分号.或空格分隔 二.Spring容器 在Spring IOC容器读取Bean配置创建Bean实例之前,必须对它进行初始化.只有在容器实例化后,才可以从IOC容器中获取Bean实例并使用. Spring提供了两种类型的IOC