0%

@Autowired

基本使用

  • 此注解可以用在Bean的成员变量,setter()方法与构造器上。

  • 默认情况下 (required=true),如果因找不到合适的bean将会导致 autowiring 失败抛出异常,可以通过下面的方式避免:

此成员变量在使用时为 null 值,在这种情况下使用此Bean中的此成员变量时,需要判定其是否为 null ,否则容易出现空指针异常。

1
2
3
4
5
6
7
public class SimpleMovielister {
private MovieFinder movieFinder;

@Autovired(required=false)
public void setMovieFinder(MovieFinder movieFinder){
this,movieFinder = movieFinder;
}
  • 每个类只能有一个构造器被标记为required=true
  • initMethod属性定义初始化前方法,类似于 @PostConstruct
  • destroyMethod属性定义销毁前方法,类似于 @PreDestory
  • @Autovired(required=true),建议使用@Required注解代替
阅读全文 »

Autowiring(自动装配)

  • **No(default):**不做任何操作
  • **byName:**根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的 bean,并将其与属性自动装配
  • **byType(@Autowired注解就为该属性):**如果容器中存在一个与指定属性类型相同的 bean,那么将与该属性自动装配;如果存在多个该类型bean,那么抛出异常,并指出不能使用 byType 方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生
  • **constructor:**与 byType 方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的 bean,那么抛出异常
1
2
3
4
5
6
7
8
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="no/byName/byType/constructor">
<!---------------配置上面这个default-autowire属性即可----------------->
阅读全文 »

肯定有整合过的单元测试组件用,spring不会有这么不优雅的东西,只是我还不会,暂时凑合着先用 ORZ

  • 创建UnitTestBase类(放在Test目录好看点),完成对Spring配置文件的加载、销毁所有的单元测试类都继承自UnitTestBase,通过它的getBean方法获取想要得到的对象

  • 子类(具体执行单元测试的类)加注解:

    @RunWith(BlockJUnit4ClassRunner.class)

  • 单元测试方法加注解:@Test

  • 右键选择要执行的单元测试方法执行或者执行一个类的全部单元测试方法

UnitTestBase工具类

阅读全文 »

从 Spring3.0开始,Spring JavaConfig 项目提供了很多特性,包括使用 java 而不是 XML 定义 bean .

比如

  • @Configuration,@Bean,@Import,@DependsOn
  • @Component是一个通用注解,可用于任何bean
  • @Repository,@Service,@Controller是更有针对性的注解
    • @Repository通常用于注解DAO类,即持久层
    • @Service通常用于注解Service类,即服务层
    • @Controller通常用于Controller类,即控制层(MVC)
      阅读全文 »

Bean标签作用:

  • 用于配置对象让 spring 来创建的。

  • 默认情况下它调用的是类中的无参构造函数。如果没有无参构造函数则不能创建成功。

    阅读全文 »

实例化Bean的方式

spring.xml 样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

<!--通过构造方法实例化Bean-->
<bean id="bean" class="com.?.Bean"/>
<!--通过静态方法实例化Bean-->
<bean id="beanFromFactory1" class="com.***.BeanFactory" factory-method="createBean1"/>
<!--通过实例方法实例化Bean-->
<bean id="beanFactory" class="com.***.BeanFactory"/>
<bean id="beanFromFactory2" factory-bean="beanFactory" factory-method="createBean2"/>
<!--Bean的别名-->
<bean id="bean1" name="bean2, bean3" class="com.***.Bean"/>
<alias name="bean1" alias="bean4"/>

</beans>
阅读全文 »

Hi Hexo!

这是我第一次真正意义上的建站,原来折腾了就删掉了,毕竟自娱自乐,确实懒的维护。这里,希望自己有恒心将本博客一直做下去。

以前,学习笔记一直保存在有道云笔记,云笔记里没有用Markdown,导出也都是 pdf ,没办法放上面,觉得还是原来笔记里的写质量好些=_=

建站的初衷是让自己拥有一个趋近于自由的,可定制化的平台,来记录和分享学习与生活。我也希望相关的技术文章可以让更多人看到,提出批评指正,和大家分享学习过程是一件相当快乐的事,也希望博文可以帮助到大家!


GitHub: SunnyGrocery

git上有一些自己简陋的demo,算是记录劳动成果吧,毕竟数据丢失过 ,长记性挂上面了,代码很烂,欢迎吐槽(逃

  • Markdown 开始用的着实不顺手,但也感觉到了Markdownd的高效与强大,希望能越来越熟练 :)