String笔记啵-2

1.Spring-autowiring(自动装配)
--byName:首先是在sping.xml配置文件中配置相互独立的bean,并且在<beans>中配置 default-autowire="byName",表示通过Name匹配需要装配的bean.
--被装配的bean在需要引入bean的类中必须声明并且声明名称必须与被装配的beanId一致,同时需要创建setter方法,即可完成自动装配。
--优点:可以明确指定具体引入Bean
--byType:首先是在sping.xml配置文件中配置相互独立的bean,并且在<beans>中配置 default-autowire="byType",表示通过类型匹配需要装配的bean.
--被装配的bean需要在引入bean的类中声明,注意此时的声明名称不起作用,但必须创建setter方法,即可完成自动装配。
--优点:可以同时同一个类型的数据(这里面包括了继承同一个类型的多个子类,多态引入(有这个词儿吗)???)
--constructor:首先是在sping.xml配置文件中配置相互独立的bean,并且在<beans>中配置 default-autowire="constructor",表示通过Name匹配需要装配的bean.
--被装配的bean需要在引入bean的类中声明,注意此时的声明名称不起作用,创建带有参数的构造方法,参数为被引入Bean的类型,而且参数的具体名称对Bean的引入没有影响 ,即可完成自动装配。
--优点:可以同时同一个类型的数据(这里面包括了继承同一个类型的多个子类,多态引入(有这个词儿吗)???)


2.如何将自定义的文件夹添加到classpath下(即工程的根目录):
--进入工程属性配置-->Java Build Path --> source -->将自定义的文件夹引入


3.Spring resources的4种文件装配方式
--classpath: Resource resource = ApplicationContext.getResouce("classpath:构建路径中的文件名称");
--http: Resource resource = ApplicationContext.getResouce("url:资源文件在网页中的地址");
--file: Resource resource = ApplicationContext.getResouce("file:资源文件在硬盘中的物理位置");
--默认:Resource resource = ApplicationContext.getResouce("文件名称");
--当资源文件装载时未指定类型,则依据ApplicationContext的配置文件引入类型变更,若spring.xml文件引入方式为classpath则资源文件引入方式也为classpath


4.自动注入名词解释:(Bean类型指定注解可以添加value参数自定义Bean的名称,想到与在spring.xml中配置beanId)
--@component:通用的也是其他指定Bean类型的【父类】
--@controller: 【Action】
--@service:【Service】
--@repository: 【Dao】
--@scope:作用域,可以指定参数 singleton,prototype,request,session,global session
--@required:作用在setter上,判断Bean是否存在,但是不判断是否为空,若为空则报beaninitializationException异常


5.spring-Autowire:注解方式注入:经过测试在spring4.0中自动注入方式为byName
--:首先在sprinig.xml文件中配置包扫描,引入context.xsd文件,增加标签名并且指定扫描包<context:component-scan base-paceage="需要扫描的包"></context:component-scan>
--:在被引用的Bean成员变量,setter方法,构造函数(参数为被引用的Bean)上添加@Autowired实现自动注入,注意被引用的Bean必须已经自动注入到spring容器中,否则异常。
--:@Autowired的注入方式其实是对类型的注入,与spring.xml配置文件中 default-autowire="byType",类似所以会出现找不到,或者是多个的问题(出现多个的问题可能是由于在spring.xml中配置多个相同类型的bean,或者同时继承相同的接口造成)。


5.1.@Autowired(required=false)作用:
--解释:对被引入Bean判断,默认情况为true,此时若类型在spring容器中无法匹配在报出BeanCreationException异常,若设置为非必须项若未发现该类型则不报错
--作用:一般用于开发人员快速启动spring,正式环境中并没有什么卵用。
--Notice:required=true 当required指向相同类型数据时,只有一个注释可以填写为true否则出现异常
5.2@Autowired 与@qualifier的联合使用:
--解释:因为@Autowire的自动注入为类型匹配时,会出现匹配多个(【spring.xml文件配置时声明不同beanId但是相同类型数据时,,或者同时继承相同的接口造成】)现象,所以通过@Qualifier实现筛选。
--@qualifier(value="beanId"),通过此命名方式细化分类
--Notice:为什么不将@Autowired 与@Qualifier结合?
--因为之间作用域不一样,前者作用域成员变量,setter方法,构造函数,而后者做用户成员变量,setter方法的参数,以及构造函数的参数
--若为提高代码的可读性最好使用成员变量凡是注入;


6.@Order:
--应用于批量注入Bean的排序使用,注意只可以作用于List集合中,根据@Order(number)中参数的大小按照升序排列,并且在Map中排序按照字母的Ascii码升序排列。


7.@Configuration + @Bean + @Scope 实现模拟spring.xml配置文件配置Bean
--@Configuration:作用与Class上,相当于指定spring.xml的配置文件
--@Bean:作用于被注入的Bean生成方法上,方法格式为 public 类型(可以是接口) 方法名称(){ return 类型}
--@Bean(name="xxx",initMethod="xxx",destroyMethod="xxx")
--name:指定注入Bean的BeanId
--initMethod:初始化方法
--destroyMethod:销毁方法
Notice:当使用配置器生成Bean是,若不指定name,则默认的beanId为方法名称 而不是生成类的首字母小写的类名!!!
--@Scope:控制Bean的作用域范围,之前看有request,session,global session这三个范围 但是并不能在参数作用配置???如何配置?


8.@Configuration + @ImportResource + @Bean + @Value + <context:property-placeholder location="jdbc.properties"> 实现模拟资源文件配置参数。
--@ImportResource:在配置器中引入spring.xml文件,并且读取<context:property-placeholder location="jdbc.properties"> 配置后的jdbc.properties文件
--@Value:通过@Value("${paramName}")格式将资源文件中数据存储到成员变量中,今儿通过重写构造方法将参数写入,完成参数的注入,模拟了<bean><property name="xxx" value="xxx"></property></bean>属性注入


9.使用泛型进Bean的多元化注入,实现Bean的多态,并且可以通过指定注入类型获得相对应的Bean,同时也可以所以用集合,Map进行批量的泛型Bean自动装配。


10.@Resource @PostConstruct @PreDestroy 的使用
--@Resource:与@Autowired作用相一致,并没有什么特殊的作用
--@PostConstruct:初始化方法的一种配置方式
--@PreDestroy:销毁配置方式


11.@Inject @Named
--@Inject:作用于@Autowired一样只不过是不同版本的另一种写法 好像实在spring3.0之后才支持
--@Named:可用作于Bean的注入与@Component等方法一致,再出现多个Bean混乱时可以作为区分字段,作用于@Qualifier一致。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值