java注解的开发_java之spring注解开发

1、xml形式

Person.java

package com.jackhu.bean;

public class Person {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "com.jackhu.bean.Person{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

public Person() {

}

}

beans.xml

MainTest.java

public class MainTest {

public static void main(String[] args) {

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

Person person = (Person) applicationContext.getBean("person");

System.out.println(person);

}

}

运行结果如下:

e85dcac82244a506fce3233dc2a05a33.png

2、注解形式

/**

* 配置类==配置文件

*

* @Configuration 告诉Spring这是一个配置类

* @Bean 给容器中注册一个Bean,类型为返回值类型,id默认是方法名作为id

*/

@Configuration

public class MainConfig {

@Bean("person")

public Person person2() {

return new Person("JACK", 18);

}

}

public class MainTest {

public static void main(String[] args) {

// 1、xml形式

// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

// Person person = (Person) applicationContext.getBean("person");

// System.out.println(person);

// 2、注解形式

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);

Person person = applicationContext.getBean(Person.class);

System.out.println(person);

String[] namesForType = applicationContext.getBeanNamesForType(Person.class);

for (String name : namesForType) {

System.out.println(name);

}

}

}

6ea594fc75c4a07767d7df2875d44b75.png

3、包扫描@ComponentScan

@Configuration

@ComponentScan(value = "com.jackhu")

public class MainConfig {

@Bean("person")

public Person person2() {

return new Person("JACK", 18);

}

}

377d230e1ce75ee4c16b3c90fc500cc8.png

测试类

public class IOCTest {

@Test

public void main() {

AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);

// 容器中所有bean名称

String[] names = applicationContext.getBeanDefinitionNames();

for (String name : names) {

System.out.println(name);

}

}

}

增加组件标记

a1075e5670a69fb012c0e02003c4fb6a.png

输出结果:

03f620b955864e314adbd1f8faa7e3f0.png

源码解析:

e19da403ab780197e2a5d2a6f2888cc1.png

0101b1fee7a8186e55e56d8d2779ce3e.png

@Configuration

@ComponentScan(value = "com.jackhu", excludeFilters = {

@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Controller.class, Service.class}) // excludeFilters排除 Controller和Service注解不加进来

})

public class MainConfig {

@Bean("person")

public Person person2() {

return new Person("JACK", 18);

}

}

41e5efaf44449b98b98857cd4efaa7cb.png

includeFilters同理

af9f3112cb8f57748edb7412f253302f.png

文章来源: www.oschina.net,作者:叶湘伦,版权归原作者所有,如需转载,请联系作者。

原文链接:https://my.oschina.net/u/3915790/blog/3145644

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值