springIOC

来源:互联网 发布:unity3d 弧线运动 编辑:程序博客网 时间:2024/04/29 03:19

Spring的核心是IOC容器,其功能

1)创建并管理对象

2)实现对象的装配

引入Spring框架

1.添加spring-core.jar  commons-logging.jar

2. 创建实体类Bean

3.使用applicationContext.xml将各种组件(Bean)纳入到Spring的管理中

  (实例化对象在配置文件中进行配置,由spring框架完成 applicationContext.xml放在src目录下)

Spring容器创建Bean对象方法常见有3

-用构造器

<bean id="empController" class="com.dsmkt.empController" >

-使用静态工厂方法

<bean id="cal" class="java.util.Calendar" factory-method=”getInstance” >    (Calendar抽象类)

-使用实例工厂方法

Spring容器实例化

Spring容器有BeanFactoryapplicationContext两种类型(BeanFactory基本不用)

applicationContext继承自BeanFactory拥有更多的企业及方法

ApplicationContext ac=newClassPathXmlApplicationContext("applicationContext.xml");

通过ac.getBean(id标识符);获得实例

对象装配   

- 1set注入

<bean id="empService" class="com.dsmkt.empService" ></bean>

<bean id="empController" class="com.dsmkt.empController" >

<property  name="empService"  ref="empService"></property>

</bean>    

-2构造器注入

<bean id="empController" class="com.dsmkt.empController" >

<constructor-arg >

 <bean class="com.dsmkt.empService" ></bean>

</constructor-arg >

</bean>

注入原理

------------------------------------------------------

首先基于xml解析后

再基于反射

String className = "org.JdbcUserDao";

Class cls = Class.forName(className);

UserDao dao = (UserDao)cls.newInstance();

dao.save();

 

String serviceName= "org.UserService";

Class service_cls = Class.forName(serviceName);

UserService service =(Uservice)service_cls.newnstance();

Method setDao_method = service_cls.getMethode("setDao",UserDao.class);

setDao_method.invoke(service,dao);

-3自动装配

<bean id="empService" class="com.dsmkt.empService" ></bean>

<bean id="empController" class="com.dsmkt.empController" autowire=”byType”></bean>    

基于注解的组件扫描

-------------------------------------------------------------------------

--使用组建扫描首先需要在xml中指定扫描类路径

<context:compponent-scan base-package="com.dsmkt"/>

@Component 通用    @Component("id")默认为小写开头类名

@Repository 持久化

@Service 业务层

@Controller 控制层

放在类上面


@Scope("prototype") 修改作用域默认为singleton

放在类上面

 

@PostConstruct  //初始化调用方法

@PreDestory //销毁前调用方法

放在方法上面

 

指定依赖注入

@Resource

放在字段或者setter方法定义前面默认先按名称匹配注入,然后按类型匹配注入------装配调用set方法

@Autowired/@Qualifier

放在字段或者setter方法定义前面按类型匹配注入

@Inject/@Name

0 0
原创粉丝点击