Spring注解开发
1.使用了配置文件
-
开启注解扫描
在xml配置文件中添加如下代码
<context:component-scan base-package="com.ml.pojo"/>
base-package
: 定义扫描路径路径下的所有组件都将被注册为bean对象, 存在于IOC容器中
-
组件注解
添加有如下任意注解的对象都将被注册为bean对象, 存在于容器中
-
@Component
-
@Repository
-
@Service
-
@Controller
@Component public class TomCat { private String name; private String gender; private Integer age; }
-
-
其他注解
-
@Scope
用于设置bean的作用域
@Component @Scope("prototype") public class TomCat { private String name; private String gender; private Integer age; }
-
@Value
用于注入属性值
@Component public class TomCat { @Value("Tom猫") private String name; @Value("男") private String gender; @Value("20") private Integer age; }
-
2.没有使用配置文件
注解
-
@Configuration
用于修饰类, 代表这是一个spring配置类, 同时这个配置类也会被注册为一个组件, 存在于IOC容器中
@Configuration public class MyConfig { }
-
@Import
用于修饰类, 用于导入别的配置类
@Configuration @Import(MyConfig2.class) public class MyConfig { }
-
@ComponentScan
用于修饰类, 开启注解扫描, 指定扫描路径, 路径下的所有组件都会被注册为bean对象, 存在于IOC容器中
@Configuration @ComponentScan("com.ml.pojo") public class MyConfig { }
-
@Bean
被@Bean修饰的方法会返回一个bean对象, 并且存在于IOC容器中, 对象的名字就是方法名
@Configuration public class MyConfig { @Bean public User getUser(){ return new User(); } }
在没有使用配置文件的情况如何获取bean对象 ?
使用AnnotationConfigApplicationContext类(ApplicationContext的子类), 传入配置类作为参数
@Test
public void test08(){
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
Jim jim = context.getBean("jim", Jim.class);
System.out.println(jim);
}