Spring 笔记

Spring 入门篇

在 Spring 中,将 Bean 注入容器中的三种方式:通过 XML配置、Java配置、自动扫描配置。

1. 基本属性注入方法

一般有三种:通过构造器注入、通过getter/setter方法注入、通过p名称空间注入。

2. Bean 获取方法

一般建议使用 id 或者 name 去获取 Bean 的实例。

3. Java 配置

将 Bean 注入到 Spring 容器中,有三种方法:xml注入、java配置、自动扫描。

// Bean
public class Hello() {
	public String sayHello() {
		return "hello java";
	}
}

// configure
@Configuration
public class JavaConfig() {
	@Bean("h1")
	Hello he(){
		return new Hello();
	}
}

// Test
public class Test(String[] arges) {
	AnnotationConfigApplicationContext ctx = ew AnnotationConfigApplicationContext(JavaConfig.class);
	Hello bean = ctx.getBean("h1",Hello.class);
	System.out.println(bean);
}

Bean 的名字默认是首字母小写的类名。

4. 自动化配置

4.1 java 配置自动扫描

// Service
@Service
public class User() {
	private String name;
	private int age;
	// getter/setter methods and constructor
}

// javaConfigure
@Configuration
@ComponentScan
public class Javaconfig() {
	@Bean   
	User user(){
		return new User("xxx",13);
	}
}

// Test
public class Test(String[] arges) {
	AnnotationConfigApplicationContext ctx = ew AnnotationConfigApplicationContext(JavaConfig.class);
	User bean = ctx.getBean(User.class);
	System.out.println(bean);
}

扫描方式有两种:通过包的位置扫、都过注解扫。
通过包的位置扫时,如果不添加包名,就是配置类所在的包下的 Bean 以及配置类所在包下的子包下的类。

4.2 对象注入

有三种方式:@Autowried、@Resource、@Injected。
@Autowried 根据类型去查找,一般要求这个类型只有一个对象。(即一个类只有一个实例)。
@Resource 一个类对应多个实例。

5、条件注解的使用-多环境切换

条件注解:@Bean 需要设置相同的 id,这样在配置时才会自动匹配,然后给每个 Bean 加上条件注解。

多环境切换:在加载配置类时,要先设置当前环境,然后在加载配置类,加载完成后需要刷新容器。
多环境切换的注解:@Profile,它的源码注解也是条件注解(@Conditional)

// Bean
@Component
public class DataSource() {
	private String url;
	private String name;
	// getter/setter methods and toString()
}

// javaConfigure
@Configuration
@ComponentScan
public class Javaconfig() {
	@Bean("ds")   
	@Profile("dev")
	DataSource dataSource(){
		DataSource data = new DataSource();
		data.setUrl("www.qqq.com");
		data.setName("qqq");
		return new data;
	}

	@Bean("ds")   
	@Profile("prod")
	DataSource dataSource(){
		DataSource data = new DataSource();
		data.setUrl("www.sss.com");
		data.setName("sss");
		return new data;
	}
}

// Test
public class Test(String[] arges) {
	AnnotationConfigApplicationContext ctx = ew AnnotationConfigApplicationContext();
	ctx.getEnvironment().setActiveProfiles("prod");
	ctx.register(Javaconfig.class);
	ctx.refresh();
	User bean = ctx.getBean(DataSource.class);
	System.out.println(bean);
}

6、混合配置

一般在整合第三方服务时使用(xml 配置 + java 配置)。在进行配置时,需要在 java 配置中使用 @ImportResource 来导入 xml 配置。

// application.xml 文件
...具体配置文件...

// java configure
@Configration
@ImportResource("classpath:application.xml")
public class javaConfig(){
	....具体设置....
}

7、Aop

8、事务

事务是一组不可分割的操作集合,要么都操作,要么都不操作,常用来确保数据的一致性。

java 事务配置

需要在 xml 文件中,添加:< tx: annotation-driven transaction-manager="transactionManager" />,在需要添加事务的方法上使用 @Transaction。

@Service
public class UserService() {
	@Autowired
	UserDao userDao;
	@Transaction
	public void updata(){
		userDao.addMoney("xxx",200);
		int i = 1 / 0;
		userDao.minMoney("yyy",200);
	}
}

@Transaction 放在类上,表示该类中的方法都开启事务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值