一,Spring中 xml 常用配置
1,声明一个对象:<bean id="user" class="com.sxt.domain.User">
2,导入一个xml的配置:<import resource="classpath:application-dao.xml"/>
3,扫描: <context:component-scan base-package="com.sxt.service.impl"></context:component-scan>
二,替换bean的一些注解
@Controller
@Service
@Compoment
@Repository
@Bean
三,Spring中一些注解说明
1、@Configuration作用于类上,相当于一个xml配置文件(相当于spring中的applicationContext.xml)
2、@Bean作用于方法上,相当于xml配置中的<bean>(相当于<bean id="", class=""></bean>)
例子:创建一个Myconfig类,User类
MyConfig.java
@Configuration
public class MyConfig {
@Bean("user")
public User getUser() {
return new User(1,"张三");
}
@Bean("user2")
public User getUser2() {
return new User(2,"李四");
}
}
User.java
public class User {
private Integer uid;
private String username;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public User(Integer uid, String username) {
this.uid = uid;
this.username = username;
}
@Override
public String toString() {
return "User [uid=" + uid + ", username=" + username + "]";
}
}
导入User测试,没有建xml文件是否能获取User对象
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
User user;
@Autowired
User user2;
@Test
public void contextLoads() {
System.out.println(user);
System.out.println(user2);
}
}
结果:可以。
3、(1)@Import注解 用于将指定的类实例注入之Spring IOC Container中。(2)@Import注解 在创建配置文件之后可以引入其它的配置文件,当于合并配置文件。
例子(1):
public class Per1 {
public Per1() {
System.out.println("我被创建了·per1");
}
}
@Configuration
@Import(value = {Per1.class})
public class MyConfig3 {
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
Per1 p1;
@Test
public void contextLoads() {
System.out.println(p1);
}
}
结果:
例子(2)
当自己创建的配置文件不和启动同包下时,可以使用@Import导入配置类。MyConfig10,MyConfig11和启动类不同包
@Import(value = {MyConfig10.class,MyConfig11.class})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4、@ComponentScan(value= {"om.wachs.service","com.wachs.dao","..."})配置扫描
当自己创建的配置文件不和启动同包下时,可以使用@ComponentScan 导入配置类。
5、@Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,我们修改调用代码,添加@Qualifier注解,需要注意的是@Qualifier的参数名称必须为我们之前定义@Bean注解的名称之一。
@Document//说明该注解将被包含在javadoc中
@Inherited//说明子类可以继承父类中的该注解
@Target:注解的作用目标
- @Target(ElementType.TYPE)//接口、类、枚举
- @Target(ElementType.FIELD)//字段、枚举的常量
- @Target(ElementType.METHOD)//方法
- @Target(ElementType.PARAMETER) //方法参数
- @Target(ElementType.CONSTRUCTOR) //构造函数
- @Target(ElementType.LOCAL_VARIABLE)//局部变量
- @Target(ElementType.ANNOTATION_TYPE)//注解
- @Target(ElementType.PACKAGE)///包