-
对于资源文件中的值的引用,如何在配置类中体现与配置文件相同功能。涉及的注解是@ImportResource和@Value
查看全部 -
关于@Bean的定义,以及与之前Bean生命周期对应的初始化与销毁部分的对应应用
查看全部 -
如何进行自定义qualifier注解:用@Qualifier注解自定义的注解
查看全部 -
@Qualifier和@Resource的使用场景的区别,在实际情况中的使用需要斟酌的条件
查看全部 -
@Autowired在数组等集合类中的使用
查看全部 -
自动装配 byname bytype byname 根据名称 bytype 根据类型查看全部
-
@TestJavaBased.java
@RunWith(BlockJUnit4ClassRunner.class)
public class TestJavaBased extends UnitTestBase{
public TestJavaBased(){
super("classpath*:spring-beanannotation.xml");
}
@Test
public void testG(){
StringStore store=super.getBean("stringStoreTest");
}
}
@Store.java
package com.imooc.annotation.javabased;
public interface Store<T> {
}
@StringStore.java
package com.imooc.annotation.javabased;
public class StringStore implements Store<String> {
}
@IntegerStore.java
package com.imooc.annotation.javabased;
public class IntegerStore implements Store<Integer> {
}
@StoreConfig.java
package com.imooc.annotation.javabased;
@Configuration
public class StoreConfig {
@Autowired
private Store<String> s1;
@Autowired
private Store<Integer> s2;
@Bean
public StringStore stringStore(){
return new StringStore();
}
@Bean
public IntegerStore integerStore(){
return new IntegerStore();
}
@Bean(name="stringStoreTest")
public Store stringStoreTest(){//相当于xml:<bean id="stringStoreTest" class="com.imooc.annotation.javabased.Store" ></bean>
syso("s1:"+s1.getClass().getName());
syso("s2:"+s2.getClass().getName());
return new IntegerStore();
}
}
@spring-beanannotation.xml
<context:component-scan base-package="com.imooc.annotation" ></context:component>
CustomAutowireConfigurer(自定义qualifier注解类型,不常用)
(1)CustomAutowireConfigurer是BeanFactoryPostProcessor的子类,通过它可以注册自己的qualifier注解类型(即使没有使用Spring的@Qualifier 注解)
(2)该AutowireCandidateResolver决定自动装配的候选者:
a)每个bean定义autowired-candidate值
b)任何<bean/>中的default-autowire-candidates
c)@Qualifier注解及使用CustomAutowireConfigurer的自定义类型
查看全部 -
(1)@Bean默认是单例的,为了指定范围,使用@Scope注解;
(2)bean的作用域 :singleton、prototype、request、session、global、session
(3)singleton、prototype(每次请求都会创建一个新的对象,为了区分,应该查看对象的hashcode,而类的hashcode是一样的)
(4)@Scope可以采用proxyMode 来指定哪种代理方式
查看全部 -
加载资源文件以及读取资源文件的两种方式。
方式一:通过配置文件
(1)<context:property-placeholder location="" ></context:property> 引入加载资源文件;
(2)通过${key}方式获取配置文件中的值;
示例:将classpath:/com/acme/jdbc.properties配置文件中jdbc的url,username,password的值分别获取并装配到DriverManagerDataSource类中的url,username,password属性中去。
方式二:通过注解方式
(1)将一个用于装载资源文件的类用@Configuration注解,并通过注解@ImportResource引入配置文件;
(2)获取配置文件中的值是通过@Value("${key}")的方式获取值,@Value要标注到属性上,才能自动将配置文件的值装配到属性上。
注意: 用@Value获取配置文件值的时候要注意,如果配置文件中key为“username”,此时spring会读取登录当前操作系统的用户名,所以此种情况要注意,不要用username做key
查看全部 -
运行结果biz
查看全部 -
name指定名称
查看全部 -
Advisors
spring中<aop:advisor>配合transactional advice使用(大多数情况下)
查看全部 -
shcema-defined aspects 只支持单例模式
查看全部 -
Introductions简介声明
查看全部 -
利用@ImportResource、@Value加载资源文件:
查看全部
举报