惠州专业网站制作公司,纯静态网站索引怎么做,网站流量与带宽,南和邢台网站制作自动装配#xff1a;根据指定的策略#xff0c;在IOC容器中匹配某个bean#xff0c;自动为bean中的类类型属性或接口类型的属性赋值#xff0c;可以通过bean标签中的autowire属性设置自动装配的策略。
一、基于xml文件 一个类型的bean在IOC容器中只出现一次#xff0c;默…自动装配根据指定的策略在IOC容器中匹配某个bean自动为bean中的类类型属性或接口类型的属性赋值可以通过bean标签中的autowire属性设置自动装配的策略。
一、基于xml文件 一个类型的bean在IOC容器中只出现一次默认就是单例的如果要通过配置多个类型的多个bean来获得不同的对象没有太大的必要只需要在bean里面里面设置一个作用域把单例设置成多例就可以获得。
基于xml文件的自动装配有以下几种方式
aytowire属性有no、default、byName、byType四种策略
1.no、default表示不匹配即bean中的属性不会自动匹配某个bean为属性赋值此时属性使用默认值。
2.byType根据要赋值的属性的类型在IOC容器中匹配某个bean给属性赋值 bean iduserController classcom.zh.spring.controller.UserController autowirebyType
!-- property nameuserService refuserService/property--/bean 注意 若通过类型没有找到任何一个类型匹配的bean此时不装配属性使用默认值 若通过类型找到了多个类型匹配的bean此时会抛出异常NoUniqueDefinitionException 当使用byType实现自动装配时IOC容器中有且只有一个类型的bean能够为属性赋值
3.byName将要赋值的属性的属性名作为bean的id在IOC容器中匹配某个bean给属性赋值。
bean iduserService classcom.zh.spring.service.impl.UserServiceImpl autowirebyName
!-- property nameuserDao refuserDao/property--/bean Testpublic void testAutowire(){ApplicationContext ioc new ClassPathXmlApplicationContext(spring-autowire-xml.xml);UserController userController ioc.getBean(UserController.class);userController.saveUser();} 总结当类型匹配的bean有多个类型时此时可以使用byName实现自动装配。 byType不行时即根据类型匹配到多个类型的bean才使用byName。 二、基于注解的自动装配
基本使用的是基于注解的自动装配管理bean
和xml配置一样注解本身并不能执行注解本身仅仅是一个标记具体的功能是框架检测到注解标记的位置然后针对这个位置按照注解标记的功能来执行具体操作。
Spring为了知道开发人员在何处加了什么标记会进行扫描。 标识组件的常用注解 Component将类标识为普通组件Controller将类标识为控制层组件Service将类标识为服务层组件Repository将类标识为持久层组件 注意这些组件不能加在接口上只能加在普通的类以及实现类上不能胡乱标记要根据是否是控制层、服务层、持久层来标记如果都不是则标记为Component 1.扫描组件 注解扫描可以将所扫描的包下的 加上注解的这些类 作为组件进行管理就是在IOC容器中有了当前类加上注解所对应的bean对象。
use-default-filtertrue(默认)所设置的包下所有的类都需要扫描此时可以使用排除扫描
use-default-filterfalse所设置的包下所有的类都不需要扫描此时可以使用包含扫描
排除扫描context:exclude-filter
包含扫描context-include-filter context:component-scan base-packagecom.zh.spring use-default-filterstrue
!-- context:exclude-filter typeannotation expressionorg.springframework.stereotype.Controller/--
!-- context:exclude-filter typeassignable expressioncom.zh.spring.controller.UserController/--context:include-filter typeannotation expressionorg.springframework.stereotype.Controller//context:component-scan 注意排除和包含不能同时使用一般排除用的多。 2.bean的id的表示方式 a.通过注解扫描所配置的bean的id默认值为类的小驼峰命名。即类名的首字母小写的结果 Testpublic void test(){ApplicationContext ioc new ClassPathXmlApplicationContext(spring-ioc-annotation.xml);UserService userService ioc.getBean(userServiceImpl,UserService.class);System.out.println(userService);UserDao userdao ioc.getBean(userDaoImpl,UserDao.class);System.out.println(userdao);UserController userController ioc.getBean(UserController.class);
// System.out.println(userController);userController.saveUser();} b.设置自定义id通过在类名上的注解的括号中的value值表示
Controller(controller) //自定义id value属性值public class UserController {}3.添加Autowired注解进行赋值
Autowired实现自动装配功能的注解 Autowired能够标识的位置 标识在成员变量上此时不需要设置成员变量的set方法 标识在set方法上 为当前成员变量赋值的有参构造函数上 Controller
public class UserController {//控制层访问这个对象//在成员变量上标记
// Autowiredprivate UserService userService;//在有参构造方法上标记Autowiredpublic UserController(UserService userService) {this.userService userService;}//在set方法上标记Autowiredpublic void setUserService(UserService userService) {this.userService userService;}public void saveUser(){userService.saveUser();}
}